[解決済み] awk で複数の引数を shebang (つまり #!) で使うには?
質問
私は
ゴーク
スクリプトを
--re-interval
を使ってシバキます。の "naive"なアプローチ。
#!/usr/bin/gawk --re-interval -f
... awk script goes here
は動作しません。なぜなら、gawk は最初の引数
"--re-interval -f"
(空白の周りで分割されていない) で呼び出されるため、gawk はそれを理解できません。これを回避する方法はありますか?
もちろん、gawkを直接呼び出さず、第一引数を分割するシェルスクリプトに包むか、シェルスクリプトを作ってからgawkを呼び出し、そのスクリプトを別のファイルに入れればいいのですが、一つのファイルの中でこれを行う方法はないかと考えています。
shebang 行の動作はシステムによって異なります - 少なくとも Cygwin では、空白で引数を分割しません。私は、そのような振る舞いをするシステム上でどのように行うかを気にしているだけで、スクリプトが移植可能であることを意図しているわけではありません。
どのように解決するのですか?
これは、(g)awkでうまくいくようです。
#!/bin/sh
arbitrary_long_name==0 "exec" "/usr/bin/gawk" "--re-interval" "-f" "$0" "$@"
# The real awk program starts here
{ print $0 }
この
#!
が実行されます。
/bin/sh
であるため、このスクリプトはまずシェルスクリプトとして解釈される。
最初、私は単純に
"exec" "/usr/bin/gawk" "--re-interval" "-f" "$0" "$@"
を試してみましたが、awk はこれをコマンドとして扱い、無条件に入力のすべての行を出力してしまいました。そのため、私は
arbitrary_long_name==0
- は常に失敗することになっているのです。これを意味不明な文字列に置き換えることもできます。基本的に、私はシェルスクリプトに悪影響を与えないような awk の false-condition を探していたのです。
シェルスクリプトの中で
arbitrary_long_name==0
という変数を定義しています。
arbitrary_long_name
という変数を定義し、それを
=0
.
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン