シェルでファイル内の特定の行をコマンドでどのように実行できますか?

シェルでファイル内の特定の行をコマンドでどのように実行できますか?

私の質問はここのスレッドに基づいています。テキストファイルで特定の行をコマンドとして実行するには?

どうやって走るの?一組のラインテキストファイルから?

これが私が今まで試したことです:

Input file:
      1 #!/usr/bin/csh -v
      2
      3 date
      4
      5 echo "abc"
      6
      7 set cell="bananas"
      8
      9   set cmd = "echo apples \
     10               oranges \
     11               graped $cell"
     12
     13 echo $cmd
     14

sed -n '5,13 p' /tmp/1 | sh

以下を提供します。

abc
(blank line)

これが残りの行を実行しないのはなぜですか?それとも私が疑うように実行されますが、コマンドが新しく実行されるため、出力は提供されませんか?単一のシェルセッションの代わりに毎回sh(ell)を使用しますか?

ありがとうございます!

答え1

shスクリプトが予期したものとは異なるシェルを使用しているため、テストは失敗しますcsh

sed -n 5,13p /tmp/1 | csh

あなたが期待する結果を生み出します。

関連情報