Bash脚本不工作

Bash脚本不工作,bash,Bash,我正在写打印乘法表的脚本 #!/bin/bash a=1 while [ $a -le "10" ] do tmp=`expr $a * $1` printf "%d x %d = %d\n" $1 $a $tmp a=`expr $a + 1` done 它给出了语法错误。Escape*如下所示 while [ $a -le "10" ] do tmp=`expr $a \* $1` printf "%d x %2d = %3d\n" $1 $a $tmp a=`

我正在写打印乘法表的脚本

#!/bin/bash
a=1
while [ $a -le "10" ]
do

tmp=`expr $a * $1`
printf "%d x %d = %d\n" $1 $a $tmp
a=`expr $a + 1`

done

它给出了语法错误。

Escape*如下所示

while [ $a -le "10" ]
do
    tmp=`expr $a \* $1`
    printf "%d x %2d = %3d\n" $1 $a $tmp
    a=`expr $a + 1`
done
请注意上述代码中的\*。
这里bash将*解释为野生字符。所以你需要将它转义到文字星号(即乘法)。如果你不想转义*,那么你可以使用(())来执行算术运算

while [ $a -le "10" ]
do
    ((tmp = $a * $1))
    printf "%d x %2d = %3d\n" $1 $a $tmp
    ((a++))
done

另外,除非你是为一个古老的非POSIX bourne shell编写,否则不要使用
expr
或backticks。如果你使用的是bash shebang,也不要在数学上使用
[