Shell Scripting Case问题

时间:2011-03-31 01:54:07

标签: shell

我正在尝试创建一个带有参数的shell脚本,然后根据第二个变量执行适当的数学等式。我收到“语法错误接近意外令牌`in”和“case”$ y“in”

#!/bin/sh  
echo "Variable name \$1 $1"  
echo "Variable name \$2 $2"  
echo "Variable name \$3 $3"  
y=$2  
echo $y  
case $y in  
    '+')    x=`expr $1 + $3`  
            echo $x  
            ;;  
    '-')    x=`expr $1 - $3`
            echo $x  
            ;;  
    '\*')   x=`expr $1 \* $3`  
            echo $x  
            ;;  
    '/')    x=`expr $1 / $3`  
            echo $x  
            ;;  
    '%')    x=`expr $1 % $3`  
            echo $x  
            ;;  
    '*')    echo "Invalid option"  
            exit 1  
            ;;  
esac

3 个答案:

答案 0 :(得分:0)

最后一个案例子句应该是

*)    echo "Invalid option"  

即。不要删除'*'

答案 1 :(得分:0)

试试这个。

#!/bin/sh
echo "Variable name \$1 $1"
echo "Variable name \$2 $2"
echo "Variable name \$3 $3"
y=$2
echo $y
case $y in
'+') x=`expr $1 + $3`; echo $x
;;
'-') x=`expr $1 - $3`; echo $x
;;
'\*') x=`expr $1 * $3`; echo $x
;;
'/') x=`expr $1 / $3`; echo $x
;;
'%') x=`expr $1 % $3`; echo $x
;;
*) echo "Invalid option"
exit 1
;;
esac

一些提示: (1)'*'应该是*结构的结尾。 *表示所有其他情况,而'*'表示*。 (2)x = expr $ 1 + $ 3应为x =`expr $ 1 + $ 3`,``(反引号键)表示在子shell中执行某些命令并将输出分配给x。 (3)在一行中有多个命令,';'应该使用。     x =`expr $ 1%$ 3`; echo $ x

答案 2 :(得分:-1)

如果您使用bash,请将您的shebang更改为#!/bin/bash