GNU/Linux >> Tutoriales Linux >  >> Linux

¿Redirigir la salida del comando de tiempo en Unix a una variable en bash?

Solución 1:

X=`(tiempo ls) 2>&1 | grepreal`

Solución 2:

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

El tiempo se verá como "0.000" usando TIMEFORMAT="%R" que será el tiempo "real".

Solución 3:

Time escribe su salida en STDERR en lugar de STDOUT. Para empeorar las cosas, por defecto, 'time' es un comando integrado de shell, por lo que si intenta 'time ls 2>&1', '2>&1' solo se aplica a 'ls'.

La solución probablemente sería algo como:

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

Hay formas más sofisticadas de hacerlo, pero esa es la forma clara/simple.


Linux
  1. ¿Cómo asignar la salida de un comando a una variable de shell?

  2. ¿Almacenar la salida del comando en la variable de Shell?

  3. ¿Redirigir la salida de un comando en `comando de tiempo`?

  4. 12 Ejemplos de opciones de formato de salida de comando de tiempo de UNIX/Linux

  5. ¿Capture automáticamente la salida del último comando en una variable usando Bash?

Cómo redirigir la salida del comando de shell

¿El comando Rm en Bash Script no funciona con variables?

Ejemplos de comandos de tiempo de Linux

¿Dividir la salida del comando por columnas usando Bash?

Falla la redirección de la salida del comando a una variable en bash

pasar grep a una variable en bash