这是我的shell脚本,
#! /bin/sh
# basic calculator
echo "Please input your choice"
printf " 1.Addition \n 2.SUbstraction \n 3.Multiplication \n 4.Division\n"
read choice
case "$choice" in
1) echo "Enter number 1:";read n1;echo "Enter number 2:";read n2;t=$(expr "$n1"+"$n2");echo "$n1+$n2=$t";;
2) echo "Enter number 1:";read n1;echo "Enter number 2:";read n2;t='expr $n1-$n2';echo "$n1-$n2=$t";;
3) echo "Enter number 1:";read n1;echo "Enter number 2:";read n2;t='expr $n1\*$n2';echo "$n1*$n2=$t";;
4) echo "Enter number 1:";read n1;echo "Enter number 2:";read n2;t='expr $n1/$n2';echo "$n1/$n2=$t";;
esac
这是我的输出,
Script started on Sunday 08 November 2015 12:05:21 PM IST
Please input your choice
1.Addition
2.SUbstraction
3.Multiplication
4.Division
1
Enter number 1:
5
Enter number 2:
6
5+6=5+6
问题是我的expr实际上并没有解决表达式
答案 0 :(得分:3)
空白很重要:
$ expr 5+6
5+6
$ expr 5 + 6
11
要做算术,你需要给expr
3个不同的参数。
答案 1 :(得分:2)
在expr
的某些版本中,建议使用shell算法:
$ echo $((5+6))
11
$ echo $((5>=6))
0
如果需要,不需要使用空格分隔整数的shell算法。
expr实用程序在参数之间没有词法区别 可以 是操作符和可能是操作数的参数。一个操作数 在词法上与运算符相同将被视为语法错误。
The syntax of the expr command in general is historic and inconvenient. New applications are advised to use shell arithmetic rather than expr
答案 2 :(得分:1)
对于'
的其他调用,您使用单引号(expr
)而不是反引号(`)。但正如我将指出的那样,几乎没有任何理由使用expr
来执行算术。