Shell scripting se usa bastante popularmente para automatizar cosas en Linux. No solo se utiliza para fines de administración de sistemas y servidores, sino también por parte de los usuarios habituales de Linux para automatizar el día a día en sus sistemas.
Un script de shell no es más que una secuencia de comandos; que un intérprete de línea de comandos (por ejemplo, Bash , Zsh ) se ejecutará. Junto con la secuencia de comandos, hay funciones como bucles , declaraciones condicionales , variables que se puede usar en un script de shell.
Una de esas características es almacenar un comando completo en una variable. Veamos qué queremos decir con eso y cómo se puede hacer.
Básicamente, los shells de Linux le permiten almacenar cualquier comando en una variable, como una cadena. Esto es útil para declaraciones complejas en línea que involucran múltiples comandos, redireccionamientos, etc. Esta variable luego se puede pasar al programa 'eval ‘ para que el contenido de la variable se ejecute como un comando.
Por ejemplo, para almacenar la salida del comando 'cat test.txt | wc -l ' en una variable llamada 'cnt ‘, podemos tener la siguiente declaración en el test.sh archivo de secuencia de comandos:
#!/bin/bash cnt="cat test.txt | wc -l"
Ahora, para ejecutar este comando en cualquier punto, pasamos la variable como argumento a 'eval ', como se muestra a continuación:
#!/bin/bash cnt="cat test.txt | wc -l" eval $cnt
Guarde y salga del script.
Ahora ejecutemos el comando y la secuencia de comandos para verificar esto.
$ cat test.txt | wc -l $ chmod + test.sh $ ./test.sh
Nota :Reemplace test.sh con su nombre de guión. Asegúrese de que su archivo de script tenga privilegios de ejecución.
Como se ve en la captura de pantalla anterior, ambos resultados son iguales.
Conclusión
En este artículo, hemos visto cómo almacenar un comando de Linux como una variable en el script de shell. Aunque esto se ha mostrado en el script de shell, también puede hacer lo mismo en la línea de comando y luego pasar la variable a 'eval ‘.
Si tiene alguna pregunta o comentario, ¡háganoslo saber en los comentarios a continuación!