我正在尝试为我的学习作业制作 Linux bash,我认为一切都很好(检查了许多资源),但仍然出现错误( –eq: binary operator expected )。我的例子有什么问题?
for (( i=1; i <= 3; i++)) ### Outer for loop ###
do
for (( j=1; j <= 3; j++)) ### Inner for loop ###
do
tot=$(expr $i + $j)
echo „tot value: $tot”
tmp=$(expr $tot % 2)
echo „tmp value: $tmp”
if [ $tmp –eq 0 ]; then
echo –e –n „\033[47m ”
else
echo –e –n „\033[40m”
fi
done
echo –e –n „\033[40m” #### set back background colour to black
echo „” #### print the new line ####
done
最佳答案
您在 –eq
中使用了错误的字符.它应该是减号( -
),而不是连字符( –
)。您在 echo
上使用的连字符也是如此。线。
也可以考虑使用 bash
的内置算术扩展而不是 expr
和 test
:
#!/bin/bash
for (( i=1; i <= 3; i++)) ### Outer for loop ###
do
for (( j=1; j <= 3; j++)) ### Inner for loop ###
do
(( tot = i + j ))
echo "tot value: $tot"
(( tmp = tot % 2 ))
echo "tmp value: $tmp"
if (( tmp == 0 )); then
echo -e -n "\033[47m "
else
echo -e -n "\033[40m"
fi
done
echo -e "\033[40m" #### set back background colour to black
done
关于bash - Ubuntu bash –eq : binary operator expected - nested for loop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67470109/