Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.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_Pipe_Bc - Fatal编程技术网

Bash 到bc的管道给出了不一致的语法错误

Bash 到bc的管道给出了不一致的语法错误,bash,pipe,bc,Bash,Pipe,Bc,我必须通过管道将整数比较(以及更复杂的算术和布尔运算)传递到bc,并且当某些数据丢失时,我必须跟踪语法错误 似乎我发现了一些与bc不一致的行为 当然: echo“1==7”| bc给出布尔值0 echo“==7”| bc给出了(标准)1:语法错误 但是: 第二行不是7,而是(标准)2:语法错误 为了这些解释,我简化了bc的输入,但我必须用更复杂的算术和布尔运算来解决这种奇怪的行为 变通办法 正如@KamilCok在下面注意到的,一个解决方法是插入换行符 echo-e“==1\n==7”| awk

我必须通过管道将整数比较(以及更复杂的算术和布尔运算)传递到bc,并且当某些数据丢失时,我必须跟踪语法错误

似乎我发现了一些与bc不一致的行为

当然:

echo“1==7”| bc
给出布尔值
0

echo“==7”| bc
给出了
(标准)1:语法错误

但是:

第二行不是
7
,而是
(标准)2:语法错误

为了这些解释,我简化了
bc
的输入,但我必须用更复杂的算术和布尔运算来解决这种奇怪的行为

变通办法 正如@KamilCok在下面注意到的,一个解决方法是插入换行符


echo-e“==1\n==7”| awk'ORS=“\n\n”| bc

不,这与键盘输入完全一致


我怀疑
bc
有一个奇怪的解析错误行为,仅此而已。

我认为这是GNU bc中yacc解析器中的一个错误。我发现在比较之间插入一个有效语句似乎可以重置状态

echo -e "==1\n1\n==7" | bc
(standard_in) 1: syntax error
1
(standard_in) 3: syntax error

因此,解决方法是在比较之间输入一个空的有效语句(就像
1
)。真正的解决方案是为GNU
bc
编写一个补丁,并通知开发人员。

我闻到一个bug。你应该写信给
bc
开发者。有趣的事实:尝试
==1\n======================================7
。我猜yacc解析器是混乱的。@KamilCuk对我来说,这给出了相同的输出hanx<代码>echo-e“==1\n==7”| awk'ORS=“\n\n”| bc
是一种解决方法。我不知道如何写补丁,但我通知了开发人员。
echo -e "==1\n1\n==7" | bc
(standard_in) 1: syntax error
1
(standard_in) 3: syntax error