这是我的作业,在 shell 脚本上编写计算器,但有两个错误,我找不到解决方案。
echo "---------Welcome to Simple Calculator--------"
echo "p=PLUS"
echo "m=MINUS"
echo "x=MULTIPLICATION"
echo "d=DIVISION"
read -p "Enter your choice" ch
if $ch -eq p
then
echo "Enter Two Number For PLUS"
read x
read y
echo "Sonuç: $((x+y))"
elif $ch -eq m
then
echo "Enter Two Number For MINUS"
read x
read y
echo "Sonuç: $((x-y))
elif $ch -eq x
then
echo "Enter Two Number For MULTIPLICATION"
read x
read y
echo "Sonuç: $((x\*y))"
elif $ch -eq d
then
echo "Enter Two Number For DIVISION"
read x
read y
echo "scale=2;x/y" | bc
else
echo "Stopping calculator"
fi
答案1
使用 shell 语法检查器,例如https://www.shellcheck.net/将帮助您识别更明显的语法错误,例如缺少引号。
但是,它对您的子句没有帮助if ... then
,所有子句都缺少测试运算符。这是一个例子:
if $ch -eq p
当您尝试运行它时,这将失败并出现某种“找不到命令”错误。 (这就是为什么在问题中包含运行程序的输出会很有帮助。)
您的意思可能是这样的,它使用测试运算符[[
..]]
来执行字符串比较而不是数字比较。
if [[ "$ch" == p ]]
最后,最好在使用所有变量的地方使用双引号,即"$ch"
而不是$ch
.
答案2
在减法部分中,您缺少一个"
(双引号):
echo "Sonuç: $((x-y))