例如,$PATH
和$HOME
當我輸入時,echo $PATH
它返回 my $PATH
,但我想回顯該單詞$PATH
,而不是實際變數代表的內容,echo "$PATH"
也不起作用。
答案1
你只需要逃避美元$
:
echo \$PATH
$PATH
或用單引號括起來:
echo '$PATH'
$PATH
這將確保 shell 不會解釋該單字。
答案2
$
在大多數 shell 的語法中是一個非常特殊的字元。如果我們只看類似 Bourne 的 shell,它用於介紹:
- 參數擴展如
$#
,$var
,${foo:-bar}
- 指令取代如下
$(logname)
(也在${ logname;}
某些 shell 中以避免子 shell) - 算術擴展如
$((1+1))
(也在$[1+1]
某些 shell 中)。 - 某些 shell 中的其他形式的引用,例如
$'\n'
or$"localized string"
。
除了最後一種情況外,這些擴展/替換仍然發生在雙引號內(以及$"..."
in bash
or內ksh93
)
為了防止它$
受到特殊對待,您需要用以下任一方式引用它:
- 單引號:
echo '$PATH'
或echo '$'PATH
.您通常想要使用的字符,因為它會轉義大多數 shell 中的所有字符(除了它本身)。 - 黑斜槓:
echo \$PATH
.也在雙引號內:echo "\$PATH"
- 在某些 shell 中,還有其他一些引用運算子:
echo $'$PATH'
,echo $'\44PATH'
(假設 ASCII 相容的字元集),echo $'\u0024'
或確保它不是上面列出的有效擴展形式的一部分:
echo "$"PATH
.應該避免這些,因為有些 shell 喜歡echo $""PATH
,echo $"PATH"
ksh93
並bash
支援$"..."
引號的形式。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
這會起作用。