长话短说,是否有可能让bc评估下列表达式?Bash bc计算器评估,多种条件未评估
echo "!(2.2 >= 0) && !(2.2 < 10)" | bc
bash: !: event not found
我知道这个工程:
echo "(2.2 >= 0) && (2.2 < 10)" | bc
1
那我做错了吗? bc手册页说它支持!expr,但我似乎无法调用它。我知道可以通过否定比较符号来解决问题,但我想知道在这种情况下应如何调用!expr。
非常感谢。
长话短说,是否有可能让bc评估下列表达式?Bash bc计算器评估,多种条件未评估
echo "!(2.2 >= 0) && !(2.2 < 10)" | bc
bash: !: event not found
我知道这个工程:
echo "(2.2 >= 0) && (2.2 < 10)" | bc
1
那我做错了吗? bc手册页说它支持!expr,但我似乎无法调用它。我知道可以通过否定比较符号来解决问题,但我想知道在这种情况下应如何调用!expr。
非常感谢。
bash: !: event not found
还有就是bash
功能,被称为‘历史扩展’(见man bash
) :它处理!
特别,即使在双引号
更换用单引号双引号应该帮助(历史扩展不存在发生)
。此外,历史扩展不会发生在非交互式shell中(也就是说,您的示例将在脚本中按原样运行)。
这似乎是bash解释你的“!”作为某种指令。更换“为”为我工作
时候才outputing东西终端这也恰好:
$ echo "!"
-bash: !: event not found
$ echo '!'
!
一个步行约与双引号的bash:
[email protected]:/tmp$ echo -e "\x21(3>5)"|bc
1
下进行测试:
[email protected]:/tmp$ bash -version|head -1
GNU bash, version 4.2.42(2)-release (i686-pc-linux-gnu)
ASCII十六进制,以防止 '!'评价?有趣。 –
@ S.T.A.L.K.E.R。我使用这个技巧来避免在编写sed行时出现“或者”。\ \ \“对很烦人。 – Kent