resultado - ¿Cómo asignar una salida a una variable shellscript?
variables en bash (1)
Estás buscando la característica de shell llamada sustitución de comandos.
Hay 2 formas de sustitución cmd
Original, de vuelta a la edad de piedra, pero completamente portátil y disponible en todas las carcasas tipo Unix (bueno, casi todas).
Usted encierra sus comandos de generación de valor dentro de los caracteres de las marcas de retroceso, es decir,
$ a=`echo 1+1 | bc -l` $ echo $a 2 $
Sustitución de cmd moderna, de apariencia menos torpe, fácilmente encajable suministrada con
$( cmd )
, es decir$ a=$(echo 1+1 | bc -l) $ echo $a 2 $
Su línea ''she-bang'' dice: #!/bin/sh
, así que si está ejecutando en una plataforma Unix real, es probable que su /bin/sh
sea el shell Bourne original, y requerirá que use la opción 1 encima.
Si prueba la opción 2 mientras sigue usando #!/bin/sh
y funciona, entonces tiene un shell moderno. Intente escribir echo ${.sh.version}
o /bin/sh -c --version
y vea si obtiene información útil. Si obtienes un número de versión, querrás conocer las características adicionales que contienen los nuevos shells.
Hablando de características más nuevas, si realmente estás usando bash, zsh, ksh93 +, entonces puedes reescribir tu código de muestra como
a=$(( 1+1 ))
O si estás haciendo más operaciones matemáticas, todo eso quedaría dentro del alcance, puedes usar aritmética de características de shell como:
(( b=1+1 ))
echo $b
2
En cualquier caso, puede evitar la creación de procesos adicionales, pero no puede hacer aritmética de punto flotante en el shell (mientras que puede hacerlo con bc
).
¿Cómo asignar este resultado a una variable de shell?
Entrada:
echo ''1+1'' | bc -l
Salida:
2
Intentos de
(no funcionó)
#!bin/sh
a=echo ''1+1'' | bc -l
echo $a