3

BASHを使用したスクリプトに関して、次の変数の違いは何ですか。

$var
"$var"
${var}
"${var}"
4

2 に答える 2

7

と の間$varに違いはありません と の間に${var}違いはありませんが、以前のバージョンを使用するとパーサーが意図を識別できない場合があることを除きます。検討:"$var""${var}"

foo=hello
echo "$fooworld"
echo "${foo}world"

echo変数fooworldが定義されていないため、最初は何も出力しません。シェルが変数helloworldを参照していると判断できたため、2 番目の出力が表示されます。foo

$varとの違い"$var"は、引用符で囲まれていない変数展開が、展開後にシェルによって評価されることです。そのような:

var='ls /'
$var

Lists /、展開後、シェルはスペースをトークン区切り文字として評価するため、

var='ls /'
"$var"

ls /: No such file or directory指定されたコマンドls /がユーザーの環境で使用できないため、結果は次のようになります。

于 2012-04-30T18:37:12.610 に答える
2

引用符で囲まれたものは、単一のパラメーターに展開され、個別の単語に分割されません。

${var}次の文字が変数名の一部である可能性がある場合、この表記法は便利です"${var}name"

function args() {
  while [ $# -gt 0 ]; do echo "arg: '$1'"; shift; done
}

# var=" a b  c"

# args $var
arg: 'a'
arg: 'b'
arg: 'c'

# args "$var"
arg: ' a b  c'
于 2012-04-30T18:28:14.443 に答える