我正在尝试创建一个带有参数的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
答案 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