-
単語の間にアンダースコアの代わりにダッシュを使用して関数またはスクリプトの名前を指定した方が_
良いでしょうか?たとえば、function duplicate-me()
またはduplicate-me.sh
。
Bashでは、変数名にアンダースコアを含めることができますが、ダッシュを含めることはできません。下線の代わりにダッシュを使用して関数とスクリプトの名前を指定すると、bashはそのような名前を変数として解釈しません。そのような名前を変数として誤って使用すると、bashがエラーメッセージを表示することが期待できます。
ありがとうございます。
ベストアンサー1
移植性が欲しいならダッシュを使うのは良くないし、標準では英数字と下線のみを許可します。そのため、ダッシュがすべてのシェルで機能しない可能性があります。
$ dash -c 'foo-bar() { echo foo-bar; }; foo-bar'
dash: 1: Syntax error: Bad function name
(Busyboxとkshもこれを許可しません。Bash、Zsh、およびmkshは許可します。)
Bashを使用していることがわかっていれば問題ありません。したがって、ダッシュが好きな場合は、関数名にダッシュを使用できます。ただし、変数名の代わりに関数を乱用したくない場合は、eg$foo-bar
とegの両方が${foo-bar}
有効なシェル構文であることに注意してください。最初は変数を展開し、$foo
文字列を追加します-bar
。 2つ目は値に拡張する$foo
か、設定されていない場合は指定された値に拡張しますbar
。