【发布时间】:2013-12-13 12:49:06
【问题描述】:
echo "!omg" 输出-bash: !omg: event not found
- 如何将
!omg字符串输出到控制台? -
我的问题出现是因为我需要使用命令行执行一些节点代码:
node -e "var code = function(){ console.log('which contains a lot of !'); }; !func();"
【问题讨论】:
标签: bash
echo "!omg" 输出-bash: !omg: event not found
!omg 字符串输出到控制台?我的问题出现是因为我需要使用命令行执行一些节点代码:
node -e "var code = function(){ console.log('which contains a lot of !'); }; !func();"
【问题讨论】:
标签: bash
使用单引号:
echo '!omg'
如果您的输入中有引号,例如打印console.log('lalala'),说:
echo $'console.log(\'lalala\')'
或者说:
cat | command << EOF
my_string_with_crazy_characters
EOF
最后一种形式不需要您转义输入中的任何字符。
【讨论】:
',因此echo 'console.log('lalala')' 打印console.log(lalala) 而不是console.log('lalala') - 有什么解决方法吗?我必须传递 javascript 代码,所以源代码中可能会出现很多不同的字符......而且我无法从文件中加载脚本。
printf '%s\n' "$something" 将打印 $something 变量的内容。
cat 解决方案将是理想的,因为它不需要转义输入。
您可以按如下方式关闭history expansion
[username@hostname ~]$ set +o histexpand
[username@hostname ~]$ echo hello!world!anything
hello!world!anything
开启
[username@hostname ~]$ set -o histexpand
[username@hostname ~]$ echo hello!world!anything
-bash: !world!anything: event not found
【讨论】:
我更喜欢取消设置 shell 变量 histchars 以有效禁用历史扩展:
$ echo !omg
bash: !omg: event not found
$ histchars=
$ echo !omg
!omg
【讨论】: