ドル記号をエコーするにはどうすればいいですか?

ドル記号をエコーするにはどうすればいいですか?

例えば$PATH$HOME

入力するとecho $PATH、 が返されますが、実際の変数が表すものではなく、$PATH単語をエコーし​​たいのですが、これも機能しません。$PATHecho "$PATH"

答え1

ドルから逃げる必要があるだけです$

echo \$PATH
$PATH

または、一重引用符で囲みます:

echo '$PATH'
$PATH

これにより、単語がシェルによって解釈されなくなります。

答え2

$ほとんどのシェルの構文では、 は非常に特殊な文字です。Bourne のようなシェルだけを見ると、次のものを導入するために使用されます。

  1. $#、、$varのようなパラメータ展開${foo:-bar}
  2. コマンド置換は次のようになります$(logname)${ logname;}一部のシェルではサブシェルを回避するためにも使用されます)。
  3. のような算術展開$((1+1))$[1+1]一部のシェルでも同様)。
  4. $'\n'またはのような一部のシェルでの引用の他の形式$"localized string"

最後のケースを除いて、これらの展開/置換は二重引用符内(または内)$"..."でも発生します。bashksh93

特別扱いされないようにするには$、次のいずれかで引用符で囲む必要があります。

  • 一重引用符:echo '$PATH'またはecho '$'PATH。ほとんどのシェルですべての文字 (その文字自身を除く) をエスケープするため、通常はこれを使用します。
  • ブラックスラッシュ: echo \$PATH. 二重引用符内でも:echo "\$PATH"
  • いくつかのシェルでは、他の引用演算子: echo $'$PATH', echo $'\44PATH'(ASCII互換の文字セットを想定)、echo $'\u0024'

または、上記にリストされている有効な拡張形式の一部ではないことを確認してください。

  • echo "$"PATH
  • echo $""PATH,echo $"PATH" 。一部のシェルは引用符の形式を好みksh93bashサポートしているため、これらは避ける必要があります。$"..."
  • echo $``PATHそれが可能であることを示す以外に、それを使用する理由はありません。
  • echo "${$+$}PATH"その他複雑なものも…

$または、別の方法で出力することもできます:

  • Unix準拠echo: echo '\044PATH'(他のものもecho必要echo -e '\044PATH')
  • printf '\44PATH\n'
  • 猫 << \EOF
    $PATH
    終了

これらのバックスラッシュも明らかにシェルにとって特別なものであるため、引用符で囲む必要があることに注意してください。

ここまでで、実行方法はたくさんあるものの、ここ以外を使用する理由はないということがはっきりしたと思いますecho '$PATH'

答え3

二重引用符内のリテラル $ は問題になる可能性があることに注意してください。次のように、二重引用符の外側に $ を作成することで解決できます。

echo "My terminal is $term, first file found in /dev is </dev/`ls /dev | head -n 1`>, the
dollar symbol is '"`echo '$'`"', and a newspaper costs "`echo '$'`"2.50."

or like this:

echo "$term is the value of "'$term'

出力:

My terminal is xterm, first file found in /dev is </dev/acpi>, the dollar symbol
is '$', and a newspaper costs $2.50.

xterm is the value of $term

答え4

使用:

echo ''\$PATH'' >> output.txt 

これはうまくいくでしょう。

関連情報