我是 bash 脚本的新手,正在练习一些代码。
我正在尝试创建一个脚本来显示以下输出并循环直到用户键入 x 或 X
菜单 1
C)计算
X)退出
C
菜单 2
输入一个整数或按X退出:
22
菜单 3
+) 添加
-) 减法
+
菜单 2
输入一个整数或按X退出:
33
22和33的和是55
菜单 1
C)计算
X)退出
c
菜单 2
输入一个整数或按X退出:
50
菜单 3
+) 添加
-) 减法
-
菜单 2 输入一个整数或按 X 退出:
23
50和23相差27
菜单 1
C)计算
X)退出
X
这是我的代码:
add ()
{
((sum=n1 + n2))
echo "The sum of $n1 and $n2 is $sum"
exit
}
subtract ()
{
((difference=n1 - n2))
echo "The difference of $n1 and $n2 is $difference"
exit
}
while true
do
echo "Menu 1"
echo "C) Calculation"
echo "X) Exit"
read opr
if [ ${opr} = 'x' ] || [ ${opr} = 'X' ]
then
break
elif [ ${opr} = 'c' ] || [ ${opr} = 'C' ]
then
echo "Menu 2"
echo "Enter an integer or press X to exit:"
fi
read n1
if [ $n1 = 'x' ] || [ $n1 = 'X' ]
then
break
else
echo "Menu3"
echo "+) Add"
echo "-) Subtract"
fi
read opr
if [ $opr = '+' ]
then
echo "Please enter another integer to perform addition"
read n2
add
elif [ $opr = '-' ]
echo "Please enter another integer to perform subtraction"
read n2
subtract
fi
done
我收到此错误消息:
./myscript.sh:第 72 行:意外标记附近的语法错误 fi'
./myscript.sh: 第 72 行:
fi'
我相信如果我将 menu1、menu2 和 menu3 制作成函数,我可以实现我想要的输出而不是这个版本。
但我知道我仍然会遇到这些问题......知道我应该把它们放在哪里或者我需要做什么才能让我的代码正常工作而不出错吗?
谢谢
药丸
最佳答案
你只是忘记了 elif
之后的 then
查看http://www.thegeekstuff.com/2010/06/bash-if-statement-examples/ 中的一般示例
If [ conditional expression1 ]
then
statement1
statement2
.
elif [ conditional expression2 ]
then
statement3
statement4
.
.
.
else
statement5
fi
在您的代码中:
...
elif [ $opr = '-' ]
then <<<<<<< missing in your code!
echo "Please enter another integer to perform subtraction"
read n2
subtract
fi
编辑:为什么程序没有循环
如果您在add
和subtract
方法中编写exit
,您的脚本将退出。为什么不应该?提示:删除 exit
和循环有机会:-)
关于linux - Bash 的新手。简单脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36662456/