Bash新手。简单的脚本

时间:2016-04-16 09:31:57

标签: linux bash shell scripting

我是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:line 72:意外令牌fi' ./myscript.sh: line 72:附近的语法错误

我相信如果我将menu1,menu2和menu3转换成函数,我可以实现我想要的输出而不是它的版本。

但是我知道我仍然会遇到这些问题...我知道应该把它们放在哪里,或者我需要做些什么才能使我的代码工作而不会出错?

谢谢

1 个答案:

答案 0 :(得分:1)

您在then

之后忘记了elif

查看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

编辑:为什么程序没有循环

如果您在exitadd方法中写subtract,您的脚本将会退出。为什么不应该?提示:删除exit并且循环有机会:-)