2017-04-05 18 views
0

ファイル入力引数などを使用しない単純なawkスクリプトを作成しようとしています。引数や入力ファイルを必要としない単純なawkスクリプト

#!/usr/bin/awk 
BEGIN{} 
{print "hello"} 
END{} 

私が使用して端子を介して、それを実行しようとすると、私はエラーawk: 1: unexpected character '.'を得る:./program.awk はなぜこれが起こっているの私は、これまでのhello worldプログラムを書いて、それをテストしましたか? printBEGIN内のブロックを入れ、

#!/usr/bin/awk -f 

をまた、あなたは何の入力を持っていないよう: は、スクリプトは次のことをawkを伝えるために、このようなシェバング行の最後に-fを追加し、あなたに

答えて

2

ありがとう

BEGIN {print "Hi"} 
+0

私は正しくあなたを理解していれば、-fフラグは '。/ program.awk'スクリプトを実行するようにawkに指示し、' BEGIN {} 'ブロックは入力ファイルを必要としないものを行うために使われますか?メインブロック '{...}'は入力ファイルを使って操作しますか? – Luki

+1

ほとんどの場合、 '。/ program.awk'を実行すると新しいプロセスが作成され、そのプロセスで' awk'が実行され、 '-f'は' awk'にスクリプトがこのファイルに続くことを伝えます。 'BEGIN {}'の内容は、入力が読み込まれる前に実行されます。これは入力データなしでユースケースに最適です。後続の '{...} 'の内容は、後続の入力行ごとに実行されますが、入力がないため、おそらく待機している可能性があります。 –

+0

スクリプトにメインブロックを作成しなくても、入力ファイルがない場合に 'END {...}'ブロックもハングしますか? – Luki

関連する問題