GNU/Linux >> Linux Esercitazione >  >> Linux

Reindirizzare l'output del comando time in unix in una variabile in bash?

Soluzione 1:

X=`(tempo ls) 2>&1 | grep real`

Soluzione 2:

Vedi 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>&-

L'ora apparirà come "0.000" usando TIMEFORMAT="%R" che sarà l'ora "reale".

Soluzione 3:

Time scrive il suo output su STDERR anziché su STDOUT. A peggiorare le cose, per impostazione predefinita 'time' è un comando integrato della shell, quindi se provi 'time ls 2>&1' il '2>&1' si applica solo a 'ls'.

La soluzione sarebbe probabilmente qualcosa del tipo:

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

Ci sono modi più fantasiosi per farlo, ma questo è il modo chiaro/semplice.


Linux
  1. Come assegnare l'output di un comando a una variabile di shell?

  2. Perché impostare una variabile prima di un comando è legale in Bash?

  3. Il comando Rm nello script Bash non funziona con la variabile?

  4. 12 Esempi di opzioni per il formato di output del comando ora UNIX / Linux

  5. Il reindirizzamento dell'output del comando a una variabile in bash non riesce

Come reindirizzare l'output del comando della shell

Reindirizza tutto l'output su file in Bash

L'output del comando reindirizza al file e al terminale

Bash cattura l'output di awk nell'array

Codice di uscita dall'assegnazione della variabile alla sostituzione dei comandi in Bash

Bash trova l'output dettagliato del comando