Me interesa dirigir la salida de dos comandos a una variable. No quiero que la salida se muestre en la pantalla, sino que se asigne a una variable dentro de mi script para que pueda volver a usarla.
lo que estoy haciendo es obtener el tamaño del archivo de un directorio usando los comandos que se ven a continuación:
ls -l /var/spool | wc -c
Este comando me muestra el tamaño del archivo en bytes y muestra la salida como un entero. Estoy interesado en asignar este entero a una variable de mi agrado para poder compararlo con otra variable más adelante
Esto no parece funcionar:
size = ls -l /var/spool | wc -c
¿Funcionaría la redirección?
Me gusta esto....
ls -l /var/spool | wc -c > size
De cualquier manera, quiero que esta salida numérica se asigne a una variable y no se muestre en la pantalla.
Cualquier sugerencia es muy bienvenida!
fuente
size=`ls -l /var/spool | wc -c`
. use este formato en su respuesta: "` `size =` ls -l / var / spool | wc -c` `` "sin comillas dobles;)$()
por las razones explicadas aquí: stackoverflow.com/a/9449788/2907484 :-)ls -l /var/spool | wc -c > size_file
, podríasread size_var < size_file
. (2) Consulte también ¿Puede $ () reemplazar siempre los backticks para la sustitución de comandos?Prefiero la solución que ofrece la respuesta de Rmano , pero si desea utilizar solo la redirección:
fuente
set -e
,set -o pipefail
, etc.). Entonces, si usa$(…)
su script, siempre continuará, mientras que con la redirección se puede configurar para que falle. (que puede ser lo que quieras o no).