这是我的作业,在 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))

相关内容