シェル変数名にハイフンまたはダッシュ(-)を含めることはできますか?

シェル変数名にハイフンまたはダッシュ(-)を含めることはできますか?

-シェルでは変数を使用できません。次のように名前付き変数に依存するスクリプトがあるので、それを使用する方法はありますか?

$export a-b=c
-bash: export: `a-b=c': not a valid identifier

$export a_b=c

1つ目は与えられたエラーを発生し、2つ目は正常に動作します。

ベストアンサー1

-私は変数名の入力を許可するBourneスタイルのシェルを見たことがありません。 ASCII文字(大文字と小文字は関係ありません)_と数字のみがサポートされており、最初の文字は数字にはできません。

プログラムにシェルの制限と一致しない環境変数が必要な場合は、envこのプログラムから始めてください。

env 'strange-name=some value' myprogram

一部のシェル(例:現代ダッシュ、mksh、zsh)環境で嫌いな名前の変数を削除します。 (シェルショック人々は環境変数名にもっと注意を払うので、時間の経過とともに制限が緩むよりも厳しくなる可能性があります。 )したがって、名前に特殊文字を含む変数をプログラムに渡す必要がある場合は、間にシェルなしで直接渡します(動作する場合もenv 'strange-name=some value' sh -c'…; myprogram'動作しない場合もあります)。

おすすめ記事