• ベストアンサー

awk のプログラム最初の行

awk のプログラムでは、おまじないのように #! /bin/awk -f を最初の行に書けと教えてもらってそうしています。 ところで、この ! とか /bin/awk -f とかどういういみなんでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • liar_adan
  • ベストアンサー率48% (730/1515)
回答No.1

awkの仕様としては、#の後はコメントになりますね。 そして、UNIX環境では、ファイルの先頭2バイトに#!と書くと、 「このファイルをどのプログラムで処理するべきか」 をカーネルに指示することができます。 つまり 「このスクリプトは、awkインタプリタ/bin/awkを使い、 -fオプション付きで処理せよ」と指定しています。 これによって、もともとテキストファイルであるawkのスクリプトを、 実行可能ファイルのごとく使えるわけです。 (参考文献↓)

参考URL:
http://www.amazon.co.jp/exec/obidos/ASIN/4756116329/
white-tiger
質問者

お礼

> そして、UNIX環境では、ファイルの先頭2バイトに#!と書くと、 > 「このファイルをどのプログラムで処理するべきか」 > をカーネルに指示することができます。 そうだったのですね。 ありがとうございます。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • rara_sun
  • ベストアンサー率50% (271/539)
回答No.2

"#!"は、シェルスクリプトの先頭に書くことで、シェルスクリプトを実行するシェルを指定するための記号です。 >#! /bin/awk -f の場合は、これを記述したファイルをAWKプログラムとして指定して実行しないさいということになります。但し、これを指定したファイルは実行権があることが前提となります。UNIX系のシェルでサポートされており、MS Windowsなどではこの指定は意味がありません。 例えば、abc.awk というファイルに実行権が与えたれており、ファイルの内容が次のような場合を考えます。 #! /bin/awk -f BEGIN{ print hello; } このファイルを次のように実行します。%はプロンプトのつもり。 % ./abc.awk nul と実行すると、hello と表示されます。 これは、 % awk -f abc.awk nul と実行したのと同じ効果があります。 その他には、 /usr/bin/sh や /usr/bin/perl などなど さまざま指定が可能です。

white-tiger
質問者

お礼

ありがとうございました。

すると、全ての回答が全文表示されます。

関連するQ&A