Upstart および bash 関数名には「-」が含まれます。

Upstart および bash 関数名には「-」が含まれます。

著者が関数名にもっと一般的な「_」の代わりに「-」を使用したいくつかのbashスクリプトを継承しました。たとえば、次のようになります。

function a-b {
...
}

醜いですが、bashでは正当です。問題は私が起動スクリプトでこれを見つけました

x.sh: 行 5: 'ab': 有効な識別子ではありません。

それが機能の内容ではなく名前であることに気づくのに時間がかかりました。とにかくこの場合、名前を変更するのは簡単なオプションではありません。私が知っている限り、Upstartは解析を使用しません/bin/sh/bin/bash?スクリプトを実行してください。だからこんな質問があると思います。

名前を変更する以外に他の解決策はありますか?

他に何もない場合は、少なくともこの質問が他の人に奇妙なbashコーディングスタイルの危険性と、彼らが時々どのようにあなたを噛むことができるかについて警告することを願っています。

答え1

ヌボ金持ちの料理本では、デフォルトシェルの変更。 3つのオプションがあり、最初の2つはデフォルトのシェルを/bin/sh別のものに変更することです。ただし、3番目のオプションは特定の問題を解決できるようです。

抜粋

別のシェルを使用して実行したいジョブ構成ファイルで「ここにドキュメント」を使用します(選択したシェルがそれをサポートしていると仮定)。

script
/bin/bash <<EOT

echo "Hi - I am running under the bash shell"

date

echo "and so am I :)"

EOT
end script

関連情報