我正在尝试计算 2 次 unix 的差异以进行简单的计算(在 shell 脚本中),但它似乎不起作用。
我已经设置$d
了 2 个变量,一个称为另一个$c
。
这是我目前用于设置变量的语法:
c= echo $a | awk -F : '{print ($1 * 32140800) + ($2 * 2678400) + ($3 * 86400) + ($4 * 3600) + ($5 * 60) }'
echo $c
d= echo $a | awk -F : '{print ($1 * 32140800) + ($2 * 2678400) + ($3 * 86400) + ($4 * 3600) + ($5 * 60) }'
echo $d
(变量 a 和 b 只是从另一个脚本接收时间戳)
我正在尝试减去$c
from的输出,$d
但我使用的每种方法似乎都不起作用。
我尝试了以下方法:1)
duration=$(echo "$d - $c")
echo $duration
2)
duration=$((d-c))
echo $duration
您在这里缺少命令替换。这将只运行
echo | awk
管道,同时c
在echo
.您在下面使用了命令替换 in
duration=$(echo "$d - $c")
,这也是您在这里需要的。IE(请注意,符号周围没有空格
=
,这就是将普通赋值与命令分开的原因,请参阅shell 脚本中变量赋值中的空格)此外,查看 awk 脚本中的数字,您似乎有 31 天的月份,因此有 372 天的年份,这可能是您想要的,也可能不是。如果您的输入也有秒数,则 awk 脚本不会使用它们。(最后应该有 a
+ $6
吗?)$a
两个命令中也有,而不是$a
and$b
。这只会设置
duration
为一个字符串,例如(具有and5678 - 1234
的实际值),因为只是打印给定的内容,它不进行算术运算。d
c
echo
这应该可以做减法。
你用的是什么外壳?算术没有在老派中实现,
/bin/sh
但在 bash 中工作得很好: