echo "!omg"
輸出-bash: !omg: event not found
如何在命令行中顯示時忽略bash事件指示符?
- 我怎麼能輸出
!omg
字符串來安慰? 我的問題出現了,因爲我需要運行一些使用節點代碼的命令行:
node -e "var code = function(){ console.log('which contains a lot of !'); }; !func();"
echo "!omg"
輸出-bash: !omg: event not found
如何在命令行中顯示時忽略bash事件指示符?
!omg
字符串來安慰?我的問題出現了,因爲我需要運行一些使用節點代碼的命令行:
node -e "var code = function(){ console.log('which contains a lot of !'); }; !func();"
使用單引號:
echo '!omg'
如果你在你的輸入引號,例如打印console.log('lalala')
,說:
echo $'console.log(\'lalala\')'
或者,說:
cat | command << EOF
my_string_with_crazy_characters
EOF
最後的形式不會要求你逃脫輸入任何字符。
你可以關閉history expansion
如下
[[email protected] ~]$ set +o histexpand
[[email protected] ~]$ echo hello!world!anything
hello!world!anything
打開
[[email protected] ~]$ set -o histexpand
[[email protected] ~]$ echo hello!world!anything
-bash: !world!anything: event not found
我寧願取消設置shell變量histchars
有效地禁用歷史擴展:
$ echo !omg
bash: !omg: event not found
$ histchars=
$ echo !omg
!omg
它的工作原理但它也會去掉字符串中的任何''''echo'console.log('lalala')''打印'consol e.log(lalala)'而不是'console.log('lalala')' - 有沒有解決這個問題的方法?我必須通過javascript代碼,所以很多不同的字符可能會出現在源代碼...我不能從文件加載腳本。 – user606521
@ user606521請參閱上面的修改。 – devnull
你也可以用printf來回顯(它更便攜!):'printf'%s \ n'「$ something」'會打印$ something變量的內容。 –