スクリプトに変数を渡す

スクリプトに変数を渡す

違いは何ですか:

./script.sh "$VARIABLE"

そして

./script.sh ${VARIABLE}

何かありますか?

答え1

$VARIABLEこれらは独立した単語であれば${VARIABLE}実質的に同じです。しかし、特にスクリプトでは次の例に注意してください。

VARIABLE=USER
echo $VARIABLE

出力が得られる

USER

しかし、入力すると

echo $VARIABLE1

期待して

USER1

VARIABLE1定義された変数がないので何も得られません

しかし、

echo ${VARIABLE}1

期待通りのUSER1出力が得られます。

答え2

ショーン・J・ゴフより:$VAR と ${VAR} および引用符を付けるかどうか

VAR=$VAR1 は、VAR=${VAR1} の簡略版です。配列インデックスの参照 (移植不可) や部分文字列の削除 (POSIX 移植可能) など、1 番目ではできないことが 2 番目ではできます。Bash 初心者ガイドの変数の詳細セクションと、POSIX 仕様のパラメータ展開を参照してください。

rm -- "$VAR1" または rm -- "${VAR}" のように変数を引用符で囲むのは良い考えです。これにより、変数の内容がアトミック ユニットになります。変数値に空白 (つまり、$IFS 特殊変数内の文字、デフォルトでは空白) またはグロブ文字が含まれており、引用符で囲まない場合は、各単語がファイル名生成 (グロブ) の対象となり、その展開によって実行している操作に同じ数の引数が作成されます。

関連情報