Tengo un script de shell "script.sh" que da salida como "éxito" o "Fallido" cuando ejecuto en la ventana de Unix. Ahora quiero almacenar el resultado de script.sh en una variable de comando de Unix. say $a = {output of script.sh}
Cómo almacenar una salida de script de shell a una variable en Unix?
Respuesta
Dos ejemplos simples para capturar la salida del comando pwd
: se prefiere
$ b=$(pwd)
$ echo $b
/home/user1
o
$ a=`pwd`
$ echo $a
/home/user1
La primera manera. Tenga en cuenta que no puede haber espacios después del =
para que esto funcione.
Ejemplo utilizando un script corto:
#!/bin/bash
echo "hi there"
entonces:
$ ./so.sh
hi there
$ a=$(so.sh)
$ echo $a
hi there
En un enfoque más flexible general sería para devolver un valor de salida del comando y utilizarlo para su posterior procesamiento, aunque a veces solo queremos capturar el resultado simple de un comando.
export a=$(script.sh)
Espero que esto ayude. Tenga en cuenta que no hay espacios entre la variable y =. Hacerse eco de la salida
echo $a
cuando se ejecutará el script? después de enviar echo $ a? o después de la exportación? – logan
¿Por qué está exportando 'a'? Debería usar comillas dobles alrededor de '$ a' en la instrucción' echo'. –
@login ejecutará la secuencia de comandos en una subshell y esperará hasta que se cierre, las transmisiones de la subshell apuntan a la variable "a", lo que significa que todo lo que generan se escribirá en la variable en lugar de la salida estándar de su shell principal –
Debe iniciar el script con un punto anterior, esto colocará las variables exportadas en el entorno actual.
#!/bin/bash
...
export output="SUCCESS"
luego ejecutarlo como tal
chmod +x /tmp/test.sh
. /tmp/test.sh
Cuando necesite toda la producción y no sólo un único valor, sólo hay que poner el resultado en una variable como las otras respuestas indican
No hay razón para "exportar" cuando se usa la fuente. Además, por solo un valor único, el estado de salida o stdout parece que tendrían más sentido. –
Usted debe probablemente vuelva a escribir la secuencia de comandos para devolver un valor en lugar de mostrarlo. En lugar de:
a=$(script.sh) # Now a is a string, either "success" or "Failed"
case "$a" in
success) echo script succeeded;;
Failed) echo script failed;;
esac
que sería capaz de hacer:
if script.sh > /dev/null; then
echo script succeeded
else
echo script failed
fi
Es mucho más sencillo para otros programas para trabajar con usted la escritura si no se tienen que analizar la salida. Este es un cambio simple de hacer. Solo exit 0
en lugar de imprimir success
, y exit 1
en lugar de imprimir Failed
. Por supuesto, también puede imprimir esos valores y salir con un valor de retorno razonable, de modo que los scripts de envoltura tengan flexibilidad en la forma en que funcionan con el script.
Como nota al margen, querrá usar 'success' y' failed' (tenga en cuenta el uso constante de mayúsculas) en cualquier código real, o las cosas se volverán confusas rápidamente. –
Supongamos que desea almacenar el resultado de un comando echo
echo hello
x=$(echo hello)
echo "$x",world!
de salida:
hello
hello,world!
@NitsanBaleli Esta es una respuesta, no una pregunta – jean
- 1. Redirigir/almacenar salida de shell en variable GDB?
- 2. Script Bash - almacenar stderr en una variable
- 3. Asignación de salida de comando a una variable de shell
- 4. Reemplazar una cadena en script de shell utilizando una variable
- 5. ¿Cómo declaro una variable constante en el script de shell?
- 6. ¿Cómo se redirige una salida de comando de shell a una entrada de script de Python?
- 7. Variable de Automator en script de shell
- 8. ¿Volver a cargar .profile en script bash shell (en Unix)?
- 9. Cómo ejecutar un script de shell de Unix desde Windows
- 10. ¿Cómo hacer el procesamiento paralelo en el script Unix Shell?
- 11. Seleccionar valores únicos o distintos de una lista en el script de shell de UNIX
- 12. Cómo almacenar el resultado de SQLPlus en una variable de shell
- 13. ¿Cómo ejecutar un script de shell en una consola Unix o en un terminal Mac?
- 14. ¿Valores predeterminados en un script de shell de Unix?
- 15. ¿Cómo ejecutar un script de shell Unix desde código Java?
- 16. Tubería una variable fiesta en awk y almacenar la salida
- 17. shell script salida al portapapeles
- 18. Salida estándar de subproceso de tubería a una variable
- 19. ¿Cómo obtener salida de grep en una sola línea en el script de shell?
- 20. ¿Cómo se exporta una variable a través de un script de shell?
- 21. Almacenar en una variable el resultado de un shell como Int
- 22. Cómo convertir a FECHA marca de tiempo Unix en el script de shell en MacOS
- 23. ¿Cómo agregar valores en una variable en scripts de shell Unix?
- 24. Combinar de salida a partir de dos comandos en una sola mesa con shell script
- 25. ¿Cómo almacenar el resultado de un comando de shell ejecutado en una variable en python?
- 26. Cómo pasar una variable FROM applescript A un script de shell?
- 27. ¿Cómo se define un script de shell con una cantidad variable de argumentos?
- 28. ¿Cómo paso una variable a un script mysql?
- 29. cómo almacenar printf en una variable?
- 30. ¿Cómo puedo almacenar la salida de la función de sistema de Perl en una variable?
posible duplicado de [shell script no puede guardar la salida de la línea de comandos en la variable] (http://desbordamiento de pila.com/questions/10487379/shell-script-can-not-save-output-from-command-line-into-variable) –
Más o menos lo mismo que [salida de comando de redirección en variable y salida estándar en ksh] (http://stackoverflow.com/questions/7901568/redirect-command-output-into-variable-and-standard-output-in-ksh) –