我正在遵循 linux shell 编程指南来提高我对 shell 的熟练程度。今天,我到达了嵌套 for 循环的部分。
以下脚本在终端上打印棋盘。
for (( i = 1; i <= 9; i++ )) ### Outer for loop ###
do
for (( j = 1 ; j <= 9; j++ )) ### Inner for loop ###
do
tot=`expr $i + $j`
tmp=`expr $tot % 2`
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
它工作正常。马上,我在它的开头加了一个shibang,让它看起来像
#!/bin/sh
for (( i = 1; i <= 9; i++ )) ### Outer for loop ###
do
for (( j = 1 ; j <= 9; j++ )) ### Inner for loop ###
do
tot=`expr $i + $j`
tmp=`expr $tot % 2`
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
然而,现在,每个白色/黑色块打印一整行。
任何人都可以帮助我理解为什么?(我在 Mac Snow Leopard 下运行 shell)。谢谢!威廉
帮派:
只是一个更新,我发现如果我使用“#!/bin/bash”,它工作正常。所以是sh内部实现的问题?
谢谢!