如何在bash算术命令中嵌套辅助命令

时间:2017-05-13 21:55:51

标签: bash arithmetic-expressions

我想打印在我的机器上运行的jvm的正常运行时间。我可以使用jcmd来做到这一点。但是我想在几分钟内打印出来。所以,我尝试了以下内容:

bash-3.2$echo $(($(jcmd 785 VM.uptime)/60))

然而,这不起作用。我收到以下错误:

bash-3.2$ echo $(($(jcmd 785 VM.uptime)/60))
bash: 785:
1541.343 s/60: syntax error in expression (error token is ":
1541.343 s/60")

如果我先将$(jcmd 785 VM.uptime)赋给变量并将其替换为算术表达式,它仍然无法正常工作。知道我怎么能让这个工作吗?

1 个答案:

答案 0 :(得分:2)

您的输出不是整数,并且有一个字符''。你应该削减不必要的部分:

echo $(( $(jcmd 785 VM.uptime |sed 's/^\([[:digit:]]*\).*$/\1/')/60 ))

echo "scale=4;$(jcmd 785 VM.uptime |sed 's/ s//')/60" |bc

- 这会给你一个浮动值。