所以我有一个shell脚本,它有超过200000次迭代。以下是给我提出问题的代码:
if [ 1 -eq `echo "$sums>$maxs" | bc` ] ;
then
hmax=$h;
kmax=$k;
maxs=$sums;
fi
sums,maxs,h和k之前已定义。我循环遍历h和k的不同值,并且从它们计算总和。但是,仅针对h和k的特定值,我收到此错误:
(standard_in) 1: syntax error
./zhu-kanamori.sh: line 173: [: 1: unary operator expected
我不明白为什么。我看到了一些类似的问题,但找不到满意的答案。所以,如果有人能指导我解决问题的地方,那也会很棒。我很清楚如何比较两个花车。但我的问题是为什么只在某些情况下我会收到此错误?
答案 0 :(得分:1)
这两个错误直接相关:
(standard_in) 1: syntax error
表示bc
无法理解传递的字符串。这意味着$sums
和$maxs
实际上并不是您认为的浮点值;使用bash -x yourscript
运行以查看正在使用的实际值(从而能够修改您的问题以包含使您的错误可重现的实际值)。./zhu-kanamori.sh: line 173: [: 1: unary operator expected
表示[
期望-eq
有两个操作数,但只传递了一个操作数。发生这种情况是因为您没有充分引用命令替换,因此bc
在失败时发出的空字符串被视为test
的零参数,而不是单个空参数。< / LI>