命令是..
t=20
s=$t+30
我希望 的输出为echo $s
,50
但我不知道如何编写s=
命令以使其执行加法。
答案1
默认情况下,Shell 变量是字符串。有些 shell 支持其他变量类型,但您必须让 shell 知道。
在任何 POSIX 风格的 shell 中(sh
除了古老的 Unix 系统、dash、bash、ksh、zsh 等),您可以使用算术展开告诉 shell 在解析变量赋值时执行算术运算。
t=20
s=$((t+30))
echo "$s"
(这里不需要双引号,但是这是一个值得养成的好习惯.)
还可以存储要计算的表达式文本,并在打印时执行算术运算。
t=20
s=$((t+30))
echo "expression: $s; evaluated: $(($s))"
但在算术表达式中使用显式变量替换时要小心:它们被替换为文本,而不是算术子表达式,因此运算符优先级可能看起来很奇怪。
echo "$(($s*2))" # equivalent to $((t+30*2)), so prints 80, not 100
在 bash、ksh 或 zsh 中,您可以使用let
或者((…))
来执行算术运算。
t=20
let s=t+30
echo "$s"
或者
((t = 20))
((s = t + 30))
echo "$s"
或其变体。
bash、ksh 或 zsh 中的另一种可能性是使用typeset
内置将变量声明为整数。然后对它的每个赋值都会执行算术评估。
typeset -i s t
t=20
s=t+30
echo "$s"
答案2
这是一种方法:
t=20
s=$((t+30)) # or s="$((t+30))"
echo "$s"
答案3
您可以使用命令执行算术运算expr
,例如:
t=20
s=$(expr "$t" + 30)
echo "$s"
在您的终端上输入man expr
以获取更多信息。