Ubuntu bash–;eq:应为二进制运算符-为循环嵌套
我正在尝试为我的学习作业制作LinuxBash,我认为一切都很好(检查了许多参考资料),但仍然出现了错误(–eq:binary operator expected)。我的例子有什么不对Ubuntu bash–;eq:应为二进制运算符-为循环嵌套,bash,ubuntu,Bash,Ubuntu,我正在尝试为我的学习作业制作LinuxBash,我认为一切都很好(检查了许多参考资料),但仍然出现了错误(–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: $t
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
for((i=1;i您在-eq
中使用了错误的字符)。它应该是负号(-
),而不是连字符(-
)。您在echo
行上使用的连字符也是如此
也考虑使用<代码> BASH 内置的算术扩展而不是<代码> EXPR和<代码>测试< /代码>:
#!/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
!/bin/bash
对于((i=1;i无关):不要启动一个子shell并调用expr
,而是使用bash
中的内置算术扩展,例如:((tot=i+j))
考虑检查。谢谢,这工作非常好