Bash

在 bash 腳本中用雙引號轉義

  • August 20, 2018

在閱讀 Advanced Bash Scripting Guide 時,我對這個主題感到困惑。根據書,

Bash 腳本,當我們引用一個字元串時,我們將它分開並保護它的字面意義。

轉義是一種引用單個字元的方法。字元前的轉義符 () 告訴 shell 按字面意思解釋該字元。

似乎這\是一個“功能”字元,但如果它也放在雙引號中怎麼辦?將\僅被視為文字還是仍會轉義?例如,

echo \z  # z
echo "\z"  # \z  seems that the backslash is taken literally
echo \\  # \
echo "\\"  # \  so why this result is not \\ ?

man bash:

用雙引號括起來的字元會保留引號內所有字元的字面值,除了 $ , , \, [...] The backslash retains its special meaning only when followed by one of the following characters: $ 、、"、\ 或換行符。

引用自:https://unix.stackexchange.com/questions/390148