違いは何ですか:
./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 特殊変数内の文字、デフォルトでは空白) またはグロブ文字が含まれており、引用符で囲まない場合は、各単語がファイル名生成 (グロブ) の対象となり、その展開によって実行している操作に同じ数の引数が作成されます。