GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Ausgabe des Zeitbefehls in Unix in eine Variable in Bash umleiten?

Lösung 1:

X=`(Zeit ls) 2>&1 | grep echt`

Lösung 2:

Siehe BashFAQ/032.

$ # captures output of command and time
$ time=$( TIMEFORMAT="%R"; { time ls; } 2>&1 )    # note the curly braces

$ # captures the time only, passes stdout through
$ exec 3>&1 4>&2
$ time=$(TIMEFORMAT="%R"; { time ls 1>&3 2>&4; } 2>&1)
bar baz
$ exec 3>&- 4>&-

Die Zeit wird mit TIMEFORMAT="%R" wie "0.000" aussehen das wird die "echte" Zeit sein.

Lösung 3:

Time schreibt seine Ausgabe in STDERR und nicht in STDOUT. Erschwerend kommt hinzu, dass 'time' standardmäßig ein in die Shell eingebauter Befehl ist. Wenn Sie also 'time ls 2>&1' versuchen, gilt '2>&1' nur für 'ls'.

Die Lösung wäre wahrscheinlich so etwas wie:

/usr/bin/time -f 'real %e' -o OUTPUT_FILE ls > /dev/null 2>&1<br>
REALTIME=$(cat OUTPUT_FILE | cut -f 2 -d ' ')

Es gibt ausgefallenere Wege, dies zu tun, aber das ist der klare/einfache Weg.


Linux
  1. Wie weist man die Ausgabe eines Befehls einer Shell-Variablen zu?

  2. Warum ist das Setzen einer Variablen vor einem Befehl in Bash legal?

  3. Rm-Befehl im Bash-Skript funktioniert nicht mit Variablen?

  4. Beispiele für Linux-Zeitbefehle

  5. Ausgabe des Befehls nach Spalten mit Bash aufteilen?

So weisen Sie einer Variablen die Ausgabe eines Linux-Befehls zu

So leiten Sie die Shell-Befehlsausgabe um

Übergeben von grep an eine Variable in bash

Bash erfasst die Ausgabe von awk in ein Array

Exit-Code der Variablenzuweisung zur Befehlsersetzung in Bash

Ausführliche Ausgabe des Bash-Suchbefehls