我該如何回應美元符號?

我該如何回應美元符號?

例如,$PATH$HOME

當我輸入時,echo $PATH它返回 my $PATH,但我想回顯該單詞$PATH,而不是實際變數代表的內容,echo "$PATH"也不起作用。

答案1

你只需要逃避美元$

echo \$PATH
$PATH

或用單引號括起來:

echo '$PATH'
$PATH

這將確保 shell 不會解釋該單字。

答案2

$在大多數 shell 的語法中是一個非常特殊的字元。如果我們只看類似 Bourne 的 shell,它用於介紹:

  1. 參數擴展如$#, $var,${foo:-bar}
  2. 指令取代如下$(logname)(也在${ logname;}某些 shell 中以避免子 shell)
  3. 算術擴展如$((1+1))(也在$[1+1]某些 shell 中)。
  4. 某些 shell 中的其他形式的引用,例如$'\n'or $"localized string"

除了最後一種情況外,這些擴展/替換仍然發生在雙引號內(以及$"..."in bashor內ksh93

為了防止它$受到特殊對待,您需要用以下任一方式引用它:

  • 單引號:echo '$PATH'echo '$'PATH.您通常想要使用的字符,因為它會轉義大多數 shell 中的所有字符(除了它本身)。
  • 黑斜槓:echo \$PATH.也在雙引號內:echo "\$PATH"
  • 在某些 shell 中,還有其他一些引用運算子:echo $'$PATH', echo $'\44PATH'(假設 ASCII 相容的字元集),echo $'\u0024'

或確保它不是上面列出的有效擴展形式的一部分:

  • echo "$"PATH
  • echo $""PATH,echo $"PATH" .應該避免這些,因為有些 shell 喜歡ksh93bash支援$"..."引號的形式。
  • echo $``PATH。除了表明這是可能的之外,您沒有任何理由想要使用它。
  • echo "${$+$}PATH"以及其他複雜的...

或者你可以用$另一種方​​式輸出:

  • 與 Unix 相容echo:(echo '\044PATH'其他一些echo需要echo -e '\044PATH'
  • printf '\44PATH\n'
  • 貓 << \EOF
    $路徑
    EOF

請注意這些反斜線需要如何引用,因為它們顯然對 shell 來說也是特殊的。

希望現在應該清楚,儘管有很多方法可以做到這一點,但沒有充分的理由您想使用除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 

這會起作用。

相關內容