bash算术命令中如何嵌套辅助命令
How nest ancillary command in bash arithmetic command
我想打印我机器上 运行 的 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)
赋值给一个变量,然后代入算术表达式,还是不行。知道我怎样才能让它工作吗?
你的输出不是一个整数,而是一个字符's'。你应该剪掉不必要的部分:
echo $(( $(jcmd 785 VM.uptime |sed 's/^\([[:digit:]]*\).*$//')/60 ))
或
echo "scale=4;$(jcmd 785 VM.uptime |sed 's/ s//')/60" |bc
-- 这会给你一个浮点值。
我想打印我机器上 运行 的 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)
赋值给一个变量,然后代入算术表达式,还是不行。知道我怎样才能让它工作吗?
你的输出不是一个整数,而是一个字符's'。你应该剪掉不必要的部分:
echo $(( $(jcmd 785 VM.uptime |sed 's/^\([[:digit:]]*\).*$//')/60 ))
或
echo "scale=4;$(jcmd 785 VM.uptime |sed 's/ s//')/60" |bc
-- 这会给你一个浮点值。