2017-05-13 64 views
0

我想打印正在我的機器上運行的jvm的正常運行時間。我可以使用jcmd來做到這一點。但是我想在幾分鐘內打印出來。所以,我嘗試了以下內容:如何在bash算術命令中嵌套輔助命令

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)一個變量第一和替代品進入算術表達式,它仍然無法正常工作。任何想法如何讓這個工作?

+0

「jcmd 785 VM.uptime」命令究竟打印了什麼? – ilkkachu

+0

在((''和之前'))之後添加空格' –

+0

沒有快樂。該命令打印jvm的正常運行時間。 – njk2015

回答

2

你的輸出不是一個整數,並且有一個字符's'。你應該削減不必要的部分:

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

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

- 這會給你一個浮點值。