Ubuntu bash–eq:应为二进制运算符-嵌套用于循环



我正在尝试为我的学习作业制作Linux bash,我认为一切都很好(检查了许多资源(,但仍然出现错误(–eq:预期为二进制运算符(。我的例子出了什么问题?

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 „33[47m ”
else
echo –e –n „33[40m”
fi
done
echo –e –n „33[40m” #### set back background colour to black
echo „” #### print the new line ####
done

您在–eq中使用了错误的字符。它应该是减号(-(,而不是连字符((。echo行中使用的连字符也是如此。

还可以考虑使用bash的内置算术扩展而不是exprtest:

#!/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 "33[47m "
else
echo -e -n "33[40m"
fi
done
echo -e "33[40m" #### set back background colour to black
done

相关内容

  • 没有找到相关文章

最新更新