ドル記号にどのように反応しますか?

ドル記号にどのように反応しますか?

$PATHたとえば、$HOME

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

答え1

USDを脱出するだけです$

echo \$PATH
$PATH

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

echo '$PATH'
$PATH

これにより、シェルが単語を解釈しないようになります。

答え2

$ほとんどのシェル構文では非常に特殊な文字です。 Bourneに似たシェルを見ると、紹介に使用されます。

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

最後の場合を除いて、これらの拡張/交換は依然として二重引用符内で発生します($"..."inbashまたは内でもksh93)。

特別待遇を受けたくない場合は、$次の方法で参考にしてください。

  • 一重引用符:echo '$PATH'またはecho '$'PATH。ほとんどのシェルはすべての文字(自分を除く)をエスケープするため、通常使用したい文字です。
  • 黒いスラッシュ: echo \$PATH。また二重引用符の中で:echo "\$PATH"
  • 一部のシェルには他の参照演算子があります。、、echo $'$PATH'echo $'\44PATH'ASCII互換文字セットを想定)、echo $'\u0024'

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

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

別の方法で出力することも$できます。

  • Unix互換echo:(echo '\044PATH'いくつかの他のecho必須echo -e '\044PATH'
  • printf '\44PATH\n'
  • 猫 <<< \ EOF
    $パス
    EOF

これらのバックスラッシュはシェルにも明らかに特殊なので、どのように引用すべきかを参照してください。

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 

これはうまくいきます。

関連情報