2013-03-12 132 views
3

我在写脚本来打印乘法表。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 

它给出了语法错误。

+2

顺便说一句,不要使用'expr'或反引号,除非你正在写一个古老的非POSIX Bourne shell。如果你使用bash shebang,不要使用'['作为数学。 – ormaaj 2013-03-12 04:56:14

回答

4

逃逸*如下

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

PLZ音符\ *在上面的代码。
这里bash将*解释为野性。所以,你需要逃避它字面星(即繁殖。如果你不想逃避*,那么你可以使用(())执行arithematic操作。

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