10

${varname}簡単な質問がありますが、とはどう違い$varnameますか?

私は両方を使用していますが、どちらをいつ使用するかを教えてくれる違いはありません。

4

3 に答える 3

14

変数名で使用{}すると、変数展開の実行中にあいまいさを取り除くことができます。

2 つの変数varとを考えますvarnamename文字列を variableに追加したいことがわかりますvar$varnameそれは変数の展開につながるため、言えませんvarname。ただし、言う${var}nameことは、望ましい結果を達成するのに役立ちます。

$ var="This is var variable."
$ varname="This is varname variable."
$ echo $varname
This is varname variable.
$ echo ${var}name
This is var variable.name

配列の任意の要素にアクセスするときも中かっこが必要です。

$ a=( foo bar baz )       # Declare an array
$ echo $a[0]              # Accessing first element -- INCORRECT
foo[0]
$ echo ${a[0]}            # Accessing first element -- CORRECT
foo

からの引用info bash

   Any  element  of  an  array may be referenced using ${name[subscript]}.
   The braces are required to avoid conflicts with pathname expansion.
于 2013-10-22T09:03:01.610 に答える
12

基本的なケースでは同じですが、を使用${varname}すると、変数をより詳細に制御および操作できます。また、混乱を招く可能性のある特殊なケースもスキップします。最後に、シェル パラメータの展開で説明されているように、変数の展開を有効にします。

「$」文字は、パラメーター展開、コマンド置換、または算術展開を導入します。展開されるパラメーター名またはシンボルは中かっこで囲むことができます。これはオプションですが、名前の一部として解釈される可能性のある直後の文字から展開される変数を保護するのに役立ちます。

中括弧が使用されている場合、対応する終了中括弧は最初の '}' であり、バックスラッシュまたは引用符で囲まれた文字列内でエスケープされておらず、組み込みの算術展開、コマンド置換、またはパラメーター展開内でもありません。

パラメータ展開の基本的な形式は ${parameter} です。パラメータの値が代入されます。parameter が 2 桁以上の位置パラメーターである場合、またはパラメーターの後に名前の一部として解釈されない文字が続く場合、中かっこが必要です。

基本的な例を見てみましょう。ここで、 を使用する${}と、シンプルで$はできないことを行うことができます。$myvar+ "blabla"::と書きたいとします。

$ myvar=23
$ echo $myvar
23
$ echo $myvarblabla
                        <--- the variable $myvarblabla doesn't exist!
$ echo ${myvar}blabla
23blabla
于 2013-10-22T09:02:28.580 に答える