den*_*den 2 shell scripting ksh
这是我的 Unix shell 脚本代码
#! /bin/ksh
echo "Enter your first number:"
read first
echo "Enter your second number:"
read second
echo "Enter your third number:"
read third
SUM=`expr $first + $second + $third`
AVERAGE="$SUM/3"
echo "The average is $AVERAGE"
Run Code Online (Sandbox Code Playgroud)
基本上我想找到用户输入的 3 个值的平均值。输入所有值后得到的结果,例如所有值加起来为 12;是“平均值是12/3”。
slm 在这里的回答没有考虑到您询问 Korn shell,而不是 Bourne Again shell。(93) Korn shell 没有内置expr
命令,因此在 Korn shell 脚本中使用时expr
您使用的是外部expr
命令。这本身不是问题。毕竟,这就是使用 Bourne shell 做事的方式,而 Bourne shell 也没有expr
内置命令。但正如 M. Kohen 指出的那样,当 shell 具有内置函数时,人们可能更喜欢使用它们。Korn shell 也有。
M. Kohen 指出了Korn shell 中可用的算术替换。重要的是要记住这是一个替换,因此如果您不想仅将其作为命令运行,则必须对替换结果执行某些操作。M. Kohen 的答案的更完整形式(修复运算符优先级错误)是:
AVERAGE="$(( (first + second + third) / 3))"
Run Code Online (Sandbox Code Playgroud)
但在 Korn shell 中还有另外两种方法可以实现此目的。Korn shell 有一个名为 的内置命令,它对其每个参数let
进行算术评估:
let "AVERAGE = (first + second + third) / 3"
Run Code Online (Sandbox Code Playgroud)
该命令的每个参数都是一个表达式,因此需要像这里一样引用空格。
它还具有一段语法,在一个 ksh 克隆手册中被描述为“语法糖let
”,其中表达式变成了该命令的单个参数:
(( AVERAGE = (first + second + third) / 3 ))
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5712 次 |
最近记录: |