為什么以下示例中缺少“c”字符?
var="\bINSERT"
echo abc${var}def
> abINSERTdef
是否有任何檔案告訴我如何做類似的事情或禁用該行為?
我找不到任何 shell 變數檔案。
uj5u.com熱心網友回復:
命令替換并沒有做錯任何事情——它的echo行為令人驚訝(合法地;POSIX 允許但不要求echo默認解釋反斜杠轉義序列,因此 zsh 在這里沒有錯)。
printf '%s\n' abc${var}def
...沒有您的問題(但對于非 zsh shell 的可移植性,我會參考"abc${var}def")。
請參閱為什么 printf 比 echo 更好?在Unix 和 Linux Stack Exchange上,以及https://pubs.opengroup.org/onlinepubs/9699919799/utilities/echo.htmlecho上的POSIX 規范
uj5u.com熱心網友回復:
正如評論中已經提到的,內部的 zsh 實作echo與外部echo命令實作的不同。
如果您想繼續使用echo,有幾種解決方法:
- 做一個
echo -E ...;關閉-E反斜杠解釋。 - 做一個
command echo ...;關鍵字命令強制外殼使用外部回顯命令。 - 在 shell 中設定選項
set bsd_echo,然后保持echo命令不變。該選項告訴 shell 默認情況下不使用其內部echo命令的反斜杠解釋。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/416999.html
標籤:
上一篇:為什么這個onchange函式不能與option:selected一起使用?
下一篇:拆分字典并將其保存到多個CSV
