Bash脚本无法运行

3
我正在编写脚本以打印乘法表。
#!/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
顺便提一下,除非你在编写古老的非POSIX Bourne shell脚本,否则不要使用expr或反引号。如果你正在使用bash shebang,也不要使用[进行数学运算。 - ormaaj
1个回答

4

将 * 转义为以下内容

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接