所以我正在制作一个简单的bash shell脚本计算器,我遇到了麻烦。
我似乎无法确定用户是否输入了+或 - 或/或*
我不确定我应该尝试写什么。我知道
echo "Enter + or - "
read input2
if [ $input2 = "+" ] then
echo "You entered $input2"
不起作用。那么我应该为基本操作员阅读什么呢?
编辑:正在使用Bash shell
答案 0 :(得分:1)
在bash中,then
之前需要使用分号或换行符。
双引号变量以防止可能导致语法错误的扩展:
if [ "$input" = '+' ] ; then
您还可以切换到不需要引用参数的[[ ... ]]
条件:
if [[ $input = + ]] ; then
echo You entered +
fi
你必须在右侧引用*
,否则它被解释为通配符模式,意思是"任何"。
答案 1 :(得分:0)
尝试if语句,如:
if [ $input = "+" ]
答案 2 :(得分:0)
您遇到了一些严重的语法问题。这是一个精致的:
#!/bin/bash
echo "Enter + or - "
read input2
if [ "$input2" = "+" ]; then
echo "You entered $input2"
fi
输出:
Enter + or -
+
You entered +
在输入过程中,您也可以打印带有读取的内容。
read -p "Enter + or - " input2
答案 3 :(得分:0)
一种简单的方法是使用bash case语句,而不是使用此计算器脚本的条件。
#!/bin/bash
echo "Enter + or - or * or /"
read input2
case $input2 in
'+' )
echo "You entered $input2" ;;
'-' )
echo "You entered $input2" ;;
'*' )
echo "You entered $input2" ;;
'/' )
echo "You entered $input2" ;;
* )
echo "Invalid input"
;;
esac
请注意案例'*'与最后一案*之间的区别(不带单引号)。第一个符号与字面上的'*'符号匹配,但最后一个(不带单引号)表示外卡。最后一个选项是一张外卡,用于捕获所有与我们正在寻找的任何情况都不匹配的无效输入。
上述脚本也可以修改为更短。
echo "Enter + or - or * or /"
read input2
case $input2 in
'+'|'-' |'*' |'/' )
echo "You entered $input2" ;;
* )
echo "Invalid input"
;;
esac
在这里它将在单个案例中查找“+”或“ - ”或“*”或“/”并打印$ input2否则它将默认打印“无效输入”。
您可以在此处阅读有关案例陈述的更多信息http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_03.html