$PATH
たとえば、$HOME
入力するとecho $PATH
my が返されますが、実際の変数が表すものではない$PATH
単語をエコーしたいのですが、うまくいきません。$PATH
echo "$PATH"
答え1
USDを脱出するだけです$
:
echo \$PATH
$PATH
または一重引用符で囲みます。
echo '$PATH'
$PATH
これにより、シェルが単語を解釈しないようになります。
答え2
$
ほとんどのシェル構文では非常に特殊な文字です。 Bourneに似たシェルを見ると、紹介に使用されます。
$#
、、$var
などのパラメータ拡張${foo:-bar}
- コマンドの置き換えは次のとおりです
$(logname)
(${ logname;}
一部のシェルではサブシェルを避けるため) $((1+1))
($[1+1]
一部のシェルでも)のような算術拡張。$'\n'
またはなど、一部のシェルの他の形式の引用です$"localized string"
。
最後の場合を除いて、これらの拡張/交換は依然として二重引用符内で発生します($"..."
inbash
または内でもksh93
)。
特別待遇を受けたくない場合は、$
次の方法で参考にしてください。
- 一重引用符:
echo '$PATH'
またはecho '$'PATH
。ほとんどのシェルはすべての文字(自分を除く)をエスケープするため、通常使用したい文字です。 - 黒いスラッシュ:
echo \$PATH
。また二重引用符の中で:echo "\$PATH"
- 一部のシェルには他の参照演算子があります。、、
echo $'$PATH'
(echo $'\44PATH'
ASCII互換文字セットを想定)、echo $'\u0024'
または、上記の有効な拡張形式の一部ではないことを確認してください。
echo "$"PATH
.一部のシェルは引用された形式を好み、サポートしているecho $""PATH
、echo $"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
これはうまくいきます。