0
ファイル入力引数などを使用しない単純なawkスクリプトを作成しようとしています。引数や入力ファイルを必要としない単純なawkスクリプト
#!/usr/bin/awk
BEGIN{}
{print "hello"}
END{}
私が使用して端子を介して、それを実行しようとすると、私はエラーawk: 1: unexpected character '.'
を得る:./program.awk
はなぜこれが起こっているの私は、これまでのhello worldプログラムを書いて、それをテストしましたか? print
BEGIN
内のブロックを入れ、
#!/usr/bin/awk -f
をまた、あなたは何の入力を持っていないよう: は、スクリプトは次のことをawk
を伝えるために、このようなシェバング行の最後に-f
を追加し、あなたに
私は正しくあなたを理解していれば、-fフラグは '。/ program.awk'スクリプトを実行するようにawkに指示し、' BEGIN {} 'ブロックは入力ファイルを必要としないものを行うために使われますか?メインブロック '{...}'は入力ファイルを使って操作しますか? – Luki
ほとんどの場合、 '。/ program.awk'を実行すると新しいプロセスが作成され、そのプロセスで' awk'が実行され、 '-f'は' awk'にスクリプトがこのファイルに続くことを伝えます。 'BEGIN {}'の内容は、入力が読み込まれる前に実行されます。これは入力データなしでユースケースに最適です。後続の '{...} 'の内容は、後続の入力行ごとに実行されますが、入力がないため、おそらく待機している可能性があります。 –
スクリプトにメインブロックを作成しなくても、入力ファイルがない場合に 'END {...}'ブロックもハングしますか? – Luki