Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash bc计算器求值,多个条件不求值_Bash_Bc - Fatal编程技术网

Bash bc计算器求值,多个条件不求值

Bash bc计算器求值,多个条件不求值,bash,bc,Bash,Bc,长话短说,可以让bc计算以下表达式吗 echo "!(2.2 >= 0) && !(2.2 < 10)" | bc bash: !: event not found echo”!(2.2>=0)和&!(2.2=0)和&(2.2

长话短说,可以让bc计算以下表达式吗

echo "!(2.2 >= 0) && !(2.2 < 10)" | bc
bash: !: event not found
echo”!(2.2>=0)和&!(2.2<10)|公元前
巴什:!:未找到事件
我知道这是可行的:

echo "(2.2 >= 0) && (2.2 < 10)" | bc
1
echo”(2.2>=0)和&(2.2<10)|公元前
1.
那么我做错了什么?卑诗省手册页说,它支持!expr,但我似乎无法调用它。我知道可以通过否定比较符号来解决这个问题,但我想知道应该如何解决这个问题!在这种情况下不能调用expr


非常感谢。

bash似乎将您的“!”解释为某种命令。替换“for”对我来说很有效

在向终端输出内容时也会发生这种情况:

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

看来狂欢节是在诠释你的“!作为一种命令。替换“for”对我来说很有效

在向终端输出内容时也会发生这种情况:

$ echo "!"
-bash: !: event not found
$ echo '!'
!
bash
有一个功能,叫做“历史扩展”(参见
manbash
):它处理
特别,即使在双引号内

用单引号替换双引号应该会有帮助(历史扩展不会在那里发生)

此外,历史扩展不会发生在非交互式shell中(也就是说,您的示例将像脚本中一样工作)

bash
有一个功能,叫做“历史扩展”(参见
manbash
):它处理
特别,即使在双引号内

用单引号替换双引号应该会有帮助(历史扩展不会在那里发生)


此外,历史扩展不会发生在非交互式shell中(也就是说,您的示例将在脚本中运行)。

在bash中使用双引号进行漫游:

kent@7pLaptop:/tmp$ echo  -e "\x21(3>5)"|bc
1
在以下条件下测试:

kent@7pLaptop:/tmp$ bash -version|head -1
GNU bash, version 4.2.42(2)-release (i686-pc-linux-gnu) 

带双引号的bash漫游:

kent@7pLaptop:/tmp$ echo  -e "\x21(3>5)"|bc
1
在以下条件下测试:

kent@7pLaptop:/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行时,我使用这个技巧来避免“或”转义。\'\'对很烦人。ASCII十六进制可以防止“!”评价有趣。@S.T.A.L.K.E.R。当我写sed行时,我使用这个技巧来避免“或”转义。\'\'对是令人讨厌的。