2017-05-13 9 views
0

Ich möchte die Verfügbarkeit für eine jvm, die auf meinem Computer ausgeführt wird, drucken. Ich kann das mit jcmd tun. Allerdings möchte ich es in wenigen Minuten ausdrucken. Also habe ich folgendes versucht:Wie Nebenbefehl in bash arithmetischen Befehl verschachteln

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

Allerdings funktioniert das nicht. Ich erhalte die folgende Fehlermeldung:

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") 

Wenn ich $(jcmd 785 VM.uptime) eine Variablen ersten und Ersatz zuweisen, dass in den arithmetischen Ausdruck, es funktioniert immer noch nicht. Irgendeine Idee, wie ich das zur Arbeit bringen kann?

+0

Was genau wird mit dem Befehl 'jcmd 785 VM.uptime' gedruckt? – ilkkachu

+0

Fügen Sie Leerzeichen nach '((' und vor '))' –

+0

Keine Freude. Der Befehl gibt die Betriebszeit des jvm aus. – njk2015

Antwort

2

Ihre Ausgabe ist keine ganze Zahl und hat ein Zeichen 's'. Sie sollten unnötige Teil geschnitten:

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

oder

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

- dies wird Ihnen einen Gleitkommawert.