私は持っています:
1 #!/bin/ksh
2 BEGIN { print "START" }
3 { print "Hello World" }
4 END { print "STOP" }
5
6
7 exit 0
その後、ファイルを実行しようとすると、次のエラーが発生します。
./file[2]: BEGIN: not found
./file[3]: syntax error: `{' unmatched
コマンドはawk
キーワードの前に来るべきですかBEGIN
?
答え1
あなたの質問を説明するとき、あなたはawk
簡単なスクリプトを実行しようとし、ksh
それを中心にスクリプトを洗練します。これを行うには、次のようにスクリプトを変更する必要があります。
1 #!/bin/ksh
2 awk 'BEGIN { print "START" } \
3 { print "Hello World" } \
4 END { print "STOP" }'
5
6
7 exit 0
スクリプトは$ PATHで実行されるawk
ときに大きな文字列を使用します。awk
大きな文字列はksh
文字列の補間を防ぐために一重引用符で囲まれており、3つの小さな文字列ではなく1つの大きな文字列にするために2行、3行、および4行の最後の文字としてバックスラッシュを使用します。
「START」を印刷した後、スクリプトがksh
停止したように見えます。 「Return」または「Enter」を数回押すだけです。 「入力」するたびに「Hello World」が表示されます。 Control-Dを実行してファイルの終わりを示しますawk
。プロセスawk
は「STOP」を印刷して終了します。
ksh
他のタスクを実行するには、入力ファイルを提供してファイルやawk
パイプに送信するなど、より多くのコンテンツを作成する必要があります。