Curso de Linux N14. Programación en Bash 001: Variables, argumentos, shift, comentarios, palabras reservadas
Cordiales Saludos
A partir de esta publicación Programación en Bash abordaré todo lo relacionado con Bash de una forma independiente. Antes referenciaba la programación bash al final de la explicación de algún tema o comando de linux. La división permitirá estructurar mejor el Curso de Linux.
Todos los ejercicios estarán en el repositorio de GitLab:
Variables
El uso de las variables dentro de la programacíón en bash tienen su sintaxis como el siguiente ejemplo: VAR1="Palabra", es decir debe estar todo unido, el identificador de la variable, el signo de igual y el valor de la variable.
Tipo String
En los tipos string podemos usar tanto comillas simples como comillas dobles. En la siguiente captura se aprecia como podemos visualizar las variables de distintas formas utilizando el comando echo. Y hacemos un repaso de la concatenación de variables. Este es el formato para tratar las variables en bash: ${VAR1}
Código
#!/bin/bash
#script_7.sh
echo Mostrando Variables
VAR1="Palabra"
VAR2="Esta es una Frase"
echo "Esta es VAR1: ${VAR1}" #Primera Forma
echo "Esta es VAR2: " ${VAR2} #Segunda forma
V="Nombre"
echo "${V}"
echo ${V}
#..............................
# En un ejercicio anterior
# Concatenando variables
echo "Concatenando variables"
echo "Script Saludo"
V1='Hola'
V2='Mundo'
V3="${V1} ${2}"
echo "${V3}"
Ejecución del código
$ bash script_7.sh
Mostrando Variables
Esta es VAR1: Palabra
Esta es VAR2: Esta es una Frase
Nombre
Nombre
Concatenando variables
Script Saludo
Hola
Tipo numérico
Al igual que las variables tipo string deben estar junto el identificador, el signo igual y el valor. Cuando se trabaja con números debemos usar el doble paréntesis. Este es el formato para tratar las variables numéricas en bash: $(( NUM1 + NUM2 ))
Código
#!/bin/bash
#script_8.sh
echo "Variables Numéricas"
NUM1=1
NUM2=3
SUMA=$(( NUM1 + NUM2 ))
echo "La suma es: ${SUMA}"
echo "La suma de 4 + 7 es: " $(( 4 + 7 ))
Ejecución del código
$ bash script_8.sh
Variables Numéricas
La suma es: 4
La suma de 4 + 7 es: 11
Pasando Argumentos a nuestro script
Podemos enviar valores a nuestros script como argumentos. Para pasar los argumentos colocamos el nombre del script seguido de los argumentos como se ve en la siguiente sintaxis: script_9.sh 1 3, los argumentos son los números 1 y 3.
Al enviar los argumentos son recibidos sus valores en las variables especiales: $1 y $2, donde el número determina la posición del argumento.
Código
#!/bin/bash
#script_9.sh
echo "Variables Numéricas - Recibiendo argumentos"
NUM1=$1
NUM2=$2
SUMA=$(( NUM1 + NUM2 ))
echo "La suma es: ${SUMA}"
Ejecutando el código
$ bash script_9.sh 1 3
Variables Numéricas - Recibiendo argumentos
La suma es: 4
Variables especiales
Ya conocemos las variables especiales: $1, primer argumento, $2 segundo argumento, y así sucesivamente. Se complementan con las variables:
- $0 : Nombre del script
- $# : Cantidad de argumentos
- $@ : Todos los argumentos pasados al script
- $LINENO: Número de lineas del script
Código
#!/bin/bash
#script_10.sh
echo "Argumentos - Variables especiales"
echo "Primer argumento pasado: " $1
echo "Segundo argumento pasado: " $2
echo "Este es el nombre del Script: " $0
echo "Cantidad de argumentos pasados al script: " $#
echo "Argumentos pasados a este script: " $@
echo "Número de líneas del script: " $LINENO
Ejecución del código
$ bash script_10.sh 1 3
Argumentos - Variables especiales
Primer argumento pasado: 1
Segundo argumento pasado: 3
Este es el nombre del Script: script_10.sh
Cantidad de argumentos pasados al script: 2
Argumentos pasados a este script: 1 3
Número de líneas del script: 9
shift
Con shift podemos alterar la posición de los argumentos que entran al script. El valor de shift más 1, determinará a partir de que posición se tomarán los argumentos.
En el siguiente ejemplo shift tiene el valor de 1, entonces se tomarán los argumentos a partir del segundo valor, en este caso el número 2, el cual tomará la primera posición. Omitiéndose el numero 1 de los argumentos.
$ cat script_12.sh
#!/bin/bash
# script_12.sh
echo "Cambiando orden de los argumentos"
shift 1
echo "shift 1"
echo 1= $1
echo 2= $2
echo 3= $3
$ bash script_12.sh 1 2 3
Cambiando orden de los argumentos
shift 1
1= 2
2= 3
3=
En este caso shift tiene el valor de 2, es decir se tomarán los valores a partir del tercer argumento. El tercer argumento tomará el primer lugar.
$ cat script_12.sh
#!/bin/bash
# script_12.sh
echo "Cambiando orden de los argumentos"
shift 2
echo "shift 2"
echo 1= $1
echo 2= $2
echo 3= $3
$ bash script_12.sh 1 2 3
Cambiando orden de los argumentos
shift 2
1= 3
2=
3=
Comentarios
Los comentarios de una sola línea comienzan con el signo: #. Ésto ya se había tratado en publicaciones anteriores.
Ahora para la realización de comentarios de múltiples líneas los podemos hacer como podemos observar en la siguiente captura de pantalla.
Puedes profundizar en el siguiente enlace el tema de Heredoc.
Código
#!/bin/bash
# script_11.sh
# Un solo comentario
: 'Comentario de varias
lineas por ejemplo
este tiene cuatro
lineas
'
:
<<!
Comentario de
multilinea. Son
tres lineas
!
<<Comento
Otra forma de comentario es usando el 'Heredoc'
donde podemos cambiar la palabra que contiene el comentario.
XXX Aquí use: Comento.
Fin del comentario
Comento
# Encontrarás multiples comentarios
# dentro del sistema que puedes hacer,
# igual funciona.
echo "Hola"
Ejecución del código
$ bash script_11.sh
Hola
Palabras Reservadas
Como cualquier lenguaje de programación Bash posee una lista de palabras que no podemos utilizar como variables dentro de nuestro script.
if | then | elif | else | fi | time |
for | in | until | while | do | done |
case | esac | coproc | select | function |
Te recomiendo que revises mis Publicaciones anteriores referentes a la rpogramación en BAsh
Temas Tratados:
- Shebang, hash-bang o sharpbang (#!)
- Distintas formas de ubicar nuestro Shell: /bin/bash
- Nuestro primer Script en Bash
Temas Tratados:
- Uso de Nano
- Comandos echo, date y cal, Coemntarios
- Ejecutando nuestros scripts
- variables en Bash
Temas Tratados:
- Concatenando Variables
- Visualizando con echo: HOSTNAME, USER, HOME
Temas Tratados:
- Concatenando Texto con echo
- Comillas dobles con echo
Temas Tratados:
- Visualización de lista de ejercicios en nuestro directorio: cat bash_0.
- Creación de un archivo de texto desde un script en bash
IMPORTANTE: Los comando vistos aquí y en próximas publicaciones están limitados para mostrarlos y conceptualizarlos para nuestro quehacer diario. Cada comando tiene muchas opciones que debemos investigar por nuestra propia cuenta cuando estemos trabajando con ellos. Aprovechemos el internet para conocer en profundidad el comando que estemos estudiando y en primer orden no olvidemos lo potente y todo lo que nos brinda el comando man para conocer la sintaxis y todo lo relacionado con todos los comandos que tenemos en nuestro sistema sin recurrir a internet.
Trabajando con nuestro repositorio en GitLab
El repositorio de los ejercicios de Bash se creó en mi laptop (Puedes ver la publicación), en este momento estoy usando la PC, entonces cloné el repositorio en este equipo(Ver como clonar repositorio).
Se revisó el repositorio en GitLAb, donde se determina que hay un nuevo script.
Verificando que en nuestro repositorio no se encuentra el archivo script_6.sh por medio del comando ls. Se procede a actualizar el repositorio local con el comando: git pull. Podemos observar al final de la captura de pantalla de mi terminal que ya aparece el archivo: script_6.sh.
Así actualice mi repositorio
rafael@HP:~/.r/hp_bash_ejercicios$
rafael@HP:~/.r/hp_bash_ejercicios$ git status
Archivos sin seguimiento:
(usa "git add <archivo>..." para incluirlo a lo que se será confirmado)
documento.txt
hola.txt
script_10.sh
script_11.sh
script_12.sh
script_7.sh
script_8.sh
script_9.sh
rafael@HP:~/.r/hp_bash_ejercicios$ git add *.sh
rafael@HP:~/.r/hp_bash_ejercicios$ git commit -m "Ejercicios del 7 al 12"
rafael@HP:~/.r/hp_bash_ejercicios$ git push
Practicando enlace simbólico
Aquí un uso del enlace simbólico.
Todos a practicar, incluyéndome! Nos vemos en la próxima publicación...
--- AVISO: Es importante que nuestra información personal (documentos, imágenes, fotos, etc) estén respaldadas en otro medio físico o en la nube. No solamente porque estemos haciendo este curso sino como práctica diaria.---
Thanks for your contribution to the STEMsocial community. Feel free to join us on discord to get to know the rest of us!
Please consider delegating to the @stemsocial account (85% of the curation rewards are returned).
You may also include @stemsocial as a beneficiary of the rewards of this post to get a stronger support.