Command-Line

如何呼應一聲巨響!

  • January 31, 2020

echo我試圖通過將內容寫入文件來創建腳本,而不是用編輯器打開它

echo -e "#!/bin/bash \n /usr/bin/command args"  > .scripts/command

輸出:_

bash: !/bin/bash: 找不到事件

我已將這種奇怪的行為與bang隔離開來。

$ echo !
!  

$ echo "!"
bash: !: event not found

$ echo \#!
#!

$ echo \#!/bin/bash
bash: !/bin/bash: event not found
  • 為什麼bang會導致這個?
  • bash 指的這些“事件”是什麼?
  • 如何解決這個問題並將“#!/bin/bash”列印到螢幕或我的文件?

嘗試使用單引號。

echo -e '#!/bin/bash \n /usr/bin/command args'  > .scripts/command

echo '#!'

echo '#!/bin/bash'

出現問題是因為 bash 正在搜尋其歷史記錄以查找 !/bin/bash。使用單引號可以避免這種行為。

正如Richm 所說,bash 正在嘗試進行歷史匹配。另一種避免它的方法是用 a 來逃避爆炸\

$ echo \#\!/bin/bash
#!/bin/bash

雖然要注意在雙引號內,但\不會刪除:

$ echo "\!"
\!

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