Bash - 'unary operator expected'
Bash - 'unary operator expected'
我有一个 shell 脚本,它有超过 200,000 次迭代。这是给我带来问题的一段代码:
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
我不明白为什么。我看到一些类似的问题,但我找不到满意的答案。可能的解决方案是什么?我很清楚如何比较两个浮点数。为什么我只在某些情况下会收到此错误?
两个错误直接相关:
(standard_in) 1: syntax error
表示 bc
不理解传递给它的字符串。这意味着 $sums
和 $maxs
实际上并不是您认为的浮点值; 运行 和 bash -x yourscript
查看使用中的实际值(从而能够修改您的问题以包含使您的错误可重现的实际值)。
./zhu-kanamori.sh: line 173: [: 1: unary operator expected
表示 [
期望 -eq
有两个操作数,但只传递了一个。发生这种情况是因为您没有充分引用命令替换,因此 bc
在失败时发出的空字符串被视为 test
的零参数,而不是单个空参数。
我有一个 shell 脚本,它有超过 200,000 次迭代。这是给我带来问题的一段代码:
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
我不明白为什么。我看到一些类似的问题,但我找不到满意的答案。可能的解决方案是什么?我很清楚如何比较两个浮点数。为什么我只在某些情况下会收到此错误?
两个错误直接相关:
(standard_in) 1: syntax error
表示bc
不理解传递给它的字符串。这意味着$sums
和$maxs
实际上并不是您认为的浮点值; 运行 和bash -x yourscript
查看使用中的实际值(从而能够修改您的问题以包含使您的错误可重现的实际值)。./zhu-kanamori.sh: line 173: [: 1: unary operator expected
表示[
期望-eq
有两个操作数,但只传递了一个。发生这种情况是因为您没有充分引用命令替换,因此bc
在失败时发出的空字符串被视为test
的零参数,而不是单个空参数。