Bash
試圖逃避引號
我嘗試了多種方法在腳本中列印這一行:
alias myname='export PATH="/path/to/bin:$PATH"'
他們都有不同的問題。
我最後一次嘗試(記住!)是:
printf '%s' '%s\n' 'alias myname=' ''\'"export PATH=\"/path/to/bin:$PATH\"" \''' >> ~/.bashrc
但它不起作用,它多次列印PATH目錄並且前面
alias myname
有%sn
(我更喜歡使用 printf)
如果我正確理解了這個問題,那麼您正在嘗試添加該行
alias myname='export PATH="/path/to/bin:$PATH"'
到你的
~/.bashrc
文件顯而易見的類型
echo
將失敗,因為 $PATH 在錯誤的時間展開。相反,我們需要做一些報價混合:
echo "alias myname='export PATH=\"/path/to/bin:\$PATH\"'" >> ~/.bashrc
現在你說,出於某種原因,你想使用
printf
. 所以我們可以做類似的事情:printf "%s\n" "alias myname='export PATH=\"/path/to/bin:\$PATH\"'" >> ~/.bashrc
如果要將兩側
=
視為單獨的字元串:printf "%s=%s\n" "alias myname" "'export PATH=\"/path/to/bin:\$PATH\"'" >> ~/.bashrc
等等。
(
printf
只接受一個格式參數,然後是一個值列表)。