Cómo trabajar con variables en Bash

Las variables son vitales si desea escribir scripts y comprender lo que ese código que está a punto de cortar y pegar de la web le hará a su computadora Linux. ¡Te pondremos en marcha!

Variables 101

Las variables son símbolos con nombre que representan una cadena o un valor numérico. Cuando se utilizan en comandos y expresiones, se tratan como si hubiera escrito el valor que contienen en lugar del nombre de la variable.

Para crear una variable, simplemente proporcione un nombre y un valor para ella. Los nombres de las variables deben ser descriptivos y recordarle el valor que tienen. Un nombre de variable no puede comenzar con un número, ni puede contener espacios. Sin embargo, puede comenzar con un guión bajo. Aparte de eso, puede usar cualquier mezcla de caracteres alfanuméricos en mayúsculas y minúsculas.

Ejemplos

Aquí, crearemos cinco variables. El formato es escribir el nombre, el signo igual =, y el valor. Tenga en cuenta que no hay un espacio antes o después del signo igual. Dar a una variable un valor a menudo se conoce como Asignar un valor para la variable.

Crearemos cuatro variables de cadena y una variable numérica, this_year:

me=Dave
my_boost=Linux
him=Popeye
his_boost=Spinach
this_year=2019

Para ver el valor mantenido en una variable, utilice el echo mandar. Debe preceder el nombre de la variable con un signo de dólar siempre que haga referencia al valor que contiene, como se muestra a continuación:

echo €my_name
echo €my_boost
echo €this_year

Usemos todas nuestras variables a la vez:

echo "€my_boost is to €me as €his_boost is to €him (c) €this_year"

Los valores de las variables sustituyen a sus nombres. También puede cambiar los valores de las variables. Para asignar un nuevo valor a la variable, my_boost, simplemente repite lo que hizo cuando asignó su primer valor, así:

my_boost=Tequila

Si vuelve a ejecutar el comando anterior, obtendrá un resultado diferente:

echo "€my_boost is to €me as €his_boost is to €him (c) €this_year"

Por lo tanto, puede usar el mismo comando que hace referencia a las mismas variables y obtener resultados diferentes si cambia los valores mantenidos en las variables.

Hablaremos de citar variables más adelante. Por ahora, aquí hay algunas cosas para recordar:

  • Una variable entre comillas simples ' se trata como una cadena literal, y no como una variable.
  • Variables entre comillas " se tratan como variables.
  • Para obtener el valor mantenido en una variable, debe proporcionar el signo de dólar .
  • Una variable sin signo de dólar sólo proporciona el nombre de la variable.

También puede crear una variable que tome su valor de una variable existente o de un número de variables. El siguiente comando define una nueva variable denominada drink_of_the_Year, y le asigna los valores combinados del my_boost y this_year Variables:

drink_of-the_Year="€my_boost €this_year"
echo drink_of_the-Year

Cómo usar variables en scripts

Los scripts estarían completamente paralizados sin variables. Las variables proporcionan la flexibilidad que hace que un script sea una solución general, en lugar de específica.  Para ilustrar la diferencia, aquí hay un script que cuenta los archivos en el /dev directorio.

Escriba esto en un archivo de texto y, a continuación, guárdelo como fcnt.sh (para “recuento de archivos”):

#!/bin/bash

folder_to_count=/dev

file_count=€(ls €folder_to_count | wc -l)

echo €file_count files in €folder_to_count

Antes de poder ejecutar el script, debe hacerlo ejecutable, como se muestra a continuación:

chmod +x fcnt.sh

Escriba lo siguiente para ejecutar el script:

./fcnt.sh

Esto imprime el número de archivos en el /dev directorio. Así es como funciona:

  • Una variable llamada folder_to_count está definido y está configurado para contener la cadena “/dev”.
  • Otra variable, llamada file_count, se define. Esta variable toma su valor de una sustitución de comandos. Esta es la frase de comando entre los paréntesis €( ). Tenga en cuenta que hay un signo de dólar antes del primer paréntesis. Esta construcción €( ) evalúa los comandos entre paréntesis y, a continuación, devuelve su valor final. En este ejemplo, ese valor se asigna al file_count variable. En cuanto a la file_count variable se refiere, se pasa un valor para mantener; no se preocupa por cómo se obtuvo el valor.
  • El comando evaluado en la sustitución de comandos realiza un ls listado de archivos en el directorio en el cuadro folder_to_count variable, que se ha establecido en “/dev”. Por lo tanto, el script ejecuta el comando “ls /dev”.
  • La salida de este comando se canaliza en el wc mandar. El -l Causas de la opción (recuento de líneas) wc Para contar el número de líneas en el resultado de la ls mandar. Como cada archivo se enumera en una línea separada, este es el recuento de archivos y subdirectorios en el directorio “/dev”. Este valor se asigna a la file_count variable.
  • La línea final utiliza eco para generar el resultado.

Pero esto solo funciona para el directorio “/dev”. ¿Cómo podemos hacer que el script funcione con cualquier directorio? Todo lo que se necesita es un pequeño cambio.

Cómo utilizar parámetros de línea de comandos en scripts

Muchos comandos, como ls y wc, tome parámetros de línea de comandos. Estos proporcionan información al comando, para que sepa lo que desea que haga. Si quieres ls para trabajar en el directorio principal y También para mostrar archivos ocultos, puede utilizar el siguiente comando, donde la tilde ~ y el -a (todos) son parámetros de línea de comandos:

ls ~ -a

Nuestros scripts pueden aceptar parámetros de línea de comandos. Se hace referencia a ellos como €1 para el primer parámetro, €2 como el segundo, y así sucesivamente, hasta €9 para el noveno parámetro. (En realidad, hay un €0, también, pero eso está reservado para mantener siempre el guión).

Puede hacer referencia a parámetros de línea de comandos en un script tal como lo haría con las variables normales. Modifiquemos nuestro script, como se muestra a continuación, y guárdelo con el nuevo nombre fcnt2.sh:

#!/bin/bash

folder_to_count=€1

file_count=€(ls €folder_to_count | wc -l)

echo €file_count files in €folder_to_count

Esta vez, el folder_to_count variable se asigna el valor del primer parámetro de línea de comandos, €1.

El resto del guión funciona exactamente como antes. En lugar de una solución específica, su script ahora es general. Puede usarlo en cualquier directorio porque no está codificado para funcionar solo con “/dev”.

Te puede ser útil:  Cómo monitorear la temperatura de la CPU de su computadora

Así es como se hace que el script sea ejecutable:

chmod +x fcnt2.sh

Ahora, pruébalo con algunos directorios. Puede hacer “/ dev” primero para asegurarse de obtener el mismo resultado que antes. Escriba lo siguiente:

./fnct2.sh /dev
./fnct2.sh /etc
./fnct2.sh /bin

Obtiene el mismo resultado (207 archivos) que antes para el directorio “/dev”. Esto es alentador y obtiene resultados específicos del directorio para cada uno de los otros parámetros de la línea de comandos.

Para acortar el script, podría prescindir de la variable, folder_to_count, en conjunto, y solo referencia €1 en todo momento, de la siguiente manera:

#!/bin/bash 

file_count=€(ls €1  wc -l) 

echo €file_count files in €1

Trabajar con variables especiales

Mencionamos €0, que siempre se establece en el nombre de archivo del script. Esto le permite usar el script para hacer cosas como imprimir su nombre correctamente, incluso si se le cambia el nombre. Esto es útil en situaciones de registro, en las que desea saber el nombre del proceso que agregó una entrada.

Las siguientes son las otras variables preestablecidas especiales:

  • €#: Cuántos parámetros de línea de comandos se pasaron al script.
  • €@: Todos los parámetros de la línea de comandos pasados al script.
  • €?: el estado de salida del último proceso que se ejecutará.
  • €€: el identificador de proceso (PID) del script actual.
  • €USER: el nombre de usuario del usuario que ejecuta el script.
  • €HOSTNAME: el nombre de host del equipo que ejecuta el script.
  • €SECONDS: el número de segundos que el script ha estado ejecutándose.
  • €RANDOM: Devuelve un número aleatorio.
  • €LINENO: devuelve el número de línea actual del script.

Quieres verlos todos en un guión, ¿no? ¡Puedes! Guarde lo siguiente como un archivo de texto llamado, special.sh:

#!/bin/bash

echo "There were €# command line parameters"
echo "They are: €@"
echo "Parameter 1 is: €1"
echo "The script is called: €0"
# any old process so that we can report on the exit status
pwd
echo "pwd returned €?"
echo "This script has Process ID €€"
echo "The script was started by €USER"
echo "It is running on €HOSTNAME"
sleep 3
echo "It has been running for €SECONDS seconds"
echo "Random number: €RANDOM"
echo "This is line number €LINENO of the script"

Escriba lo siguiente para que sea ejecutable:

chmod +x special.sh

Ahora, puede ejecutarlo con un montón de parámetros de línea de comandos diferentes, como se muestra a continuación.

Variables de entorno

Bash utiliza variables de entorno para definir y registrar las propiedades del entorno que crea cuando se inicia. Estos contienen información a la que Bash puede acceder fácilmente, como su nombre de usuario, configuración regional, el número de comandos que puede contener su archivo de historial, su editor predeterminado y mucho más.

Para ver las variables de entorno activas en la sesión de Bash, utilice este comando:

env | less

Si se desplaza por la lista, es posible que encuentre algunos que serían útiles para hacer referencia en sus scripts.

Cómo exportar variables

Cuando se ejecuta un script, está en su propio proceso y las variables que utiliza no se pueden ver fuera de ese proceso. Si desea compartir una variable con otro script que inicie el script, debe exportar esa variable. Te mostraremos cómo hacerlo con dos guiones.

Primero, guarde lo siguiente con el nombre de archivo script_one.sh:

#!/bin/bash

first_var=alpha
second_var=bravo

# check their values
echo "€0: first_var=€first_var, second_var=€second_var"

export first_var
export second_var

./script_two.sh

# check their values again
echo "€0: first_var=€first_var, second_var=€second_var"

Esto crea dos variables, first_var y second_var, y asigna algunos valores. Los imprime en la ventana del terminal, exporta las variables y llama script_two.sh. Cuando script_two.sh termina, y el flujo de proceso vuelve a este script, de nuevo imprime las variables en la ventana del terminal. Luego, puedes ver si cambiaron.

El segundo script que usaremos es script_two.sh. Este es el script que script_one.shLlamadas. Escriba lo siguiente:

#!/bin/bash

# check their values
echo "€0: first_var=€first_var, second_var=€second_var"

# set new values
first_var=charlie
second_var=delta

# check their values again
echo "€0: first_var=€first_var, second_var=€second_var"

Este segundo script imprime los valores de los dos variables, les asigna nuevos valores y, a continuación, los imprime de nuevo.

Para ejecutar estos scripts, debe escribir lo siguiente para que sean ejecutables:

chmod +x script_one.sh
chmod +x script_two.sh

Y ahora, escriba lo siguiente para iniciar script_one.sh:

./script_one.sh

Esto es lo que nos dice la salida:

  • script_one.sh imprime los valores de las variables, que son alfa y bravo.
  • script_two.sh imprime los valores de las variables (alfa y bravo) tal y como las recibió.
  • script_two.sh los cambia a charlie y delta.
  • script_one.sh imprime los valores de las variables, que siguen siendo alfa y bravo.

Lo que sucede en el segundo guión, se queda en el segundo guión. Es como si se enviaran copias de las variables al segundo script, pero se descartan cuando sale ese script. Las variables originales en el primer script no se alteran por nada de lo que sucede con las copias de ellas en el segundo.

Cómo cotizar variables

Es posible que haya notado que cuando los scripts hacen referencia a variables, están entre comillas ". Esto permite que las variables se referencian correctamente, por lo que sus valores se utilizan cuando se ejecuta la línea en el script.

Si el valor que asigne a una variable incluye espacios, deben estar entre comillas cuando los asigne a la variable. Esto se debe a que, de forma predeterminada, Bash utiliza un espacio como delimitador.

Aquí hay un ejemplo:

site_name=How-To Geek

Bash ve el espacio antes de “Geek” como una indicación de que se está iniciando un nuevo comando. Informa que no existe tal comando y abandona la línea. echo nos muestra que el site_name variable no contiene nada, ni siquiera el texto “How-To”.

Inténtelo de nuevo con comillas alrededor del valor, como se muestra a continuación:

site_name="How-To Geek"

Esta vez, se reconoce como un valor único y se asigna correctamente a la site_name variable.

echo es tu amigo

Puede llevar algún tiempo acostumbrarse a ordenar la sustitución, cotizar variables y recordar cuándo incluir el signo de dólar.

Antes de presionar Enter y ejecutar una línea de comandos Bash, pruébelo con echo frente a él. De esta manera, puede asegurarse de que lo que va a suceder es lo que desea. También puede detectar cualquier error que haya cometido en la sintaxis.

¿Qué tan útil te resultó el artículo?

¡Haz click en una estrella para valorar!

Valoración media / 5. Votos totales:

¡No hay votos hasta ahora! Sé el primero en valorar este artículo.

Utilizamos cookies para personalizar el contenido y los anuncios, para ofrecer funciones de redes sociales y para analizar nuestro tráfico. También compartimos información sobre su uso de nuestro sitio con nuestros socios de redes sociales, publicidad y análisis. View more
Cookies settings
Aceptar
Política de privacidad y cookies
Privacy & Cookies policy
Cookie name Active
El presente Política de Privacidad establece los términos en que Alternativa.click usa y protege la información que es proporcionada por sus usuarios al momento de utilizar su sitio web. Esta compañía está comprometida con la seguridad de los datos de sus usuarios. Cuando le pedimos llenar los campos de información personal con la cual usted pueda ser identificado, lo hacemos asegurando que sólo se empleará de acuerdo con los términos de este documento. Sin embargo esta Política de Privacidad puede cambiar con el tiempo o ser actualizada por lo que le recomendamos y enfatizamos revisar continuamente esta página para asegurarse que está de acuerdo con dichos cambios.

Información que es recogida

Nuestro sitio web podrá recoger información personal por ejemplo: Nombre,  información de contacto como  su dirección de correo electrónica e información demográfica. Así mismo cuando sea necesario podrá ser requerida información específica para procesar algún pedido o realizar una entrega o facturación.

Uso de la información recogida

Nuestro sitio web emplea la información con el fin de proporcionar el mejor servicio posible, particularmente para mantener un registro de usuarios, de pedidos en caso que aplique, y mejorar nuestros productos y servicios.  Es posible que sean enviados correos electrónicos periódicamente a través de nuestro sitio con ofertas especiales, nuevos productos y otra información publicitaria que consideremos relevante para usted o que pueda brindarle algún beneficio, estos correos electrónicos serán enviados a la dirección que usted proporcione y podrán ser cancelados en cualquier momento. Alternativa.click está altamente comprometido para cumplir con el compromiso de mantener su información segura. Usamos los sistemas más avanzados y los actualizamos constantemente para asegurarnos que no exista ningún acceso no autorizado.

Cookies

Una cookie se refiere a un fichero que es enviado con la finalidad de solicitar permiso para almacenarse en su ordenador, al aceptar dicho fichero se crea y la cookie sirve entonces para tener información respecto al tráfico web, y también facilita las futuras visitas a una web recurrente. Otra función que tienen las cookies es que con ellas las web pueden reconocerte individualmente y por tanto brindarte el mejor servicio personalizado de su web. Nuestro sitio web emplea las cookies para poder identificar las páginas que son visitadas y su frecuencia. Esta información es empleada únicamente para análisis estadístico y después la información se elimina de forma permanente. Usted puede eliminar las cookies en cualquier momento desde su ordenador. Sin embargo las cookies ayudan a proporcionar un mejor servicio de los sitios web, estás no dan acceso a información de su ordenador ni de usted, a menos de que usted así lo quiera y la proporcione directamente. Usted puede aceptar o negar el uso de cookies, sin embargo la mayoría de navegadores aceptan cookies automáticamente pues sirve para tener un mejor servicio web. También usted puede cambiar la configuración de su ordenador para declinar las cookies. Si se declinan es posible que no pueda utilizar algunos de nuestros servicios.

Enlaces a Terceros

Este sitio web pudiera contener en laces a otros sitios que pudieran ser de su interés. Una vez que usted de clic en estos enlaces y abandone nuestra página, ya no tenemos control sobre al sitio al que es redirigido y por lo tanto no somos responsables de los términos o privacidad ni de la protección de sus datos en esos otros sitios terceros. Dichos sitios están sujetos a sus propias políticas de privacidad por lo cual es recomendable que los consulte para confirmar que usted está de acuerdo con estas. Control de su información personal En cualquier momento usted puede restringir la recopilación o el uso de la información personal que es proporcionada a nuestro sitio web.  Cada vez que se le solicite rellenar un formulario, como el de alta de usuario, puede marcar o desmarcar la opción de recibir información por correo electrónico.  En caso de que haya marcado la opción de recibir nuestro boletín o publicidad usted puede cancelarla en cualquier momento. Esta compañía no venderá, cederá ni distribuirá la información personal que es recopilada sin su consentimiento, salvo que sea requerido por un juez con un orden judicial. Alternativa.click Se reserva el derecho de cambiar los términos de la presente Política de Privacidad en cualquier momento.
Save settings
Cookies settings