awkコマンドを含むシェルスクリプトを実行する方法[閉じる]

awkコマンドを含むシェルスクリプトを実行する方法[閉じる]

このスクリプト(と呼ばれる)をどのように実行しますかcount.sh

awk 'BEGIN{ x=0 ; while (x < 5) { x+=1 ; print x ; } }'

実行しようとしてsh count.shエラーが発生します。

答え1

私のスクリプトに対して私がしたことは次のとおりです。

#!/usr/bin/awk -f
BEGIN{ x=0 ; while (x < 5) { x+=1 ; print x ; } }

このアプローチの唯一の欠点は、Awkへのパスがハードコーディングされていることです。これは、スクリプトがNFSを介してエクスポートされ、NFSクライアントが別のディレクトリ(..など)にAwkをインストールした場合に/bin/awk中断さ/usr/bin/awkれます。

実行権限を設定すると、スクリプトを実行するためにシェルを使用せずにスクリプトを直接呼び出すことができます(慣例によってはスクリプトに含まれないため、.sh拡張子を省略することもできます)。

$ chmod +x count
$ ./count
1
2
3
4
5

答え2

あなたのスクリプトを実行しましたが、エラーは発生しませんでした(予想したものとは異なり:)。

$ cat test.awk
awk 'BEGIN{ x=0 ; while (x < 5) { x+=1 ; print x ; } }'
$ bash test.awk
1
2
3
4
5

どのようなエラーが発生しましたか?私はawkが処理する入力ファイルを要求すると予想しました。 :)

関連情報