我有这个 Bash 脚本,但在第 16 行遇到了问题。
我如何获取第 15 行的先前结果并添加
它到第 16 行的变量?
#!/bin/bash
num=0
metab=0
for ((i=1; i<=2; i++)); do
for j in `ls output-$i-*`; do
echo "$j"
metab=$(cat $j|grep EndBuffer|awk '{sum+=$2} END { print sum/120}') (line15)
num= $num + $metab (line16)
done
echo "$num"
done
对于整数:
-
Use 算术展开 http://tldp.org/LDP/abs/html/arithexp.html: $((EXPR))
num=$((num1 + num2))
num=$(($num1 + $num2)) # Also works
num=$((num1 + 2 + 3)) # ...
num=$[num1+num2] # Old, deprecated arithmetic expression syntax
-
使用外部expr
公用事业。请注意,这仅适用于非常旧的系统。
num=`expr $num1 + $num2` # Whitespace for expr is important
对于浮点数:
Bash 不直接支持这一点,但是您可以使用一些外部工具:
num=$(awk "BEGIN {print $num1+$num2; exit}")
num=$(python -c "print $num1+$num2")
num=$(perl -e "print $num1+$num2")
num=$(echo $num1 + $num2 | bc) # Whitespace for echo is important
您还可以使用科学记数法(例如,2.5e+2
).
常见陷阱:
-
设置变量时,两边不能有空格=
,否则它将强制 shell 将第一个单词解释为要运行的应用程序的名称(例如,num=
or num
)
num= 1
罢工> num =2
罢工>
-
bc
and expr
期望每个数字和运算符作为单独的参数,因此空格很重要。他们无法处理像3+
+4
.
num=`expr $num1+ $num2`
罢工>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)