create account

Curso de Linux N14. Programación en Bash 001: Variables, argumentos, shift, comentarios, palabras reservadas by rafaelaquino

View this thread on: hive.blogpeakd.comecency.com
· @rafaelaquino · (edited)
$3.62
Curso de Linux N14. Programación en Bash 001: Variables, argumentos, shift, comentarios, palabras reservadas
Cordiales Saludos

<center>
![0_14portada.png](https://files.peakd.com/file/peakd-hive/rafaelaquino/48jibtEVsncTVbhFgKs9nRYUm4nxVTnYAGCgDAVQU5QfXr5AoBDsrTVXbExoYt3gzW.png)
</center>

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:
* https://gitlab.com/btcsiraquino/hp_bash_ejercicios

<center>
![banner_bash.png](https://files.peakd.com/file/peakd-hive/rafaelaquino/23wzvMoqqWSKfdAQe16wTV4VBydv67FCPeZeuGZJDnQoXysr6m1ECbfFg7PVLZGq1kXCC.png)
</center>

### 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}**

<center>
![0_14__1.png](https://files.peakd.com/file/peakd-hive/rafaelaquino/23swigLghRszDpgZJa75JrAqiTFVWhSBxQAkecN8rySTMrosZAvh1QGvFEkVe9AYFwnzu.png)
</center>

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 
~~~
<center>
![separador.png](https://files.peakd.com/file/peakd-hive/rafaelaquino/23uFPJhEN7pXCFuUPACERgPpACAageNzbGoxYWb4RbcMBnbuk7NWs5SLMiH6e629fH5Tb.png)
</center>

#### 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 ))
<center>
![0_14__2.png](https://files.peakd.com/file/peakd-hive/rafaelaquino/23swib4S9b1eL9SUV6mxN1fNJQKxvzXvcM9QDqzbGpjewPyWKtwAzH1VcYFugwSxFVnvo.png)
</center>

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
~~~

<center>
![separador.png](https://files.peakd.com/file/peakd-hive/rafaelaquino/23uFPJhEN7pXCFuUPACERgPpACAageNzbGoxYWb4RbcMBnbuk7NWs5SLMiH6e629fH5Tb.png)
</center>

#### 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. 

<center>
![0_14__3.png](https://files.peakd.com/file/peakd-hive/rafaelaquino/23swiWAiVyML1Lpe9ideVCPJ9n34PJfn5QNm7cLAkvKg2vKXi4z9qGhUdMtsh6xTPQYnn.png)
</center>

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
~~~

<center>
![separador.png](https://files.peakd.com/file/peakd-hive/rafaelaquino/23uFPJhEN7pXCFuUPACERgPpACAageNzbGoxYWb4RbcMBnbuk7NWs5SLMiH6e629fH5Tb.png)
</center>

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
<center>
![0_14__4.png](https://files.peakd.com/file/peakd-hive/rafaelaquino/23swkEXHxQkaC2ibMhkHTdhjzHr4bEEnVNrMqKeC7CRbgJELTyDzR1Enhg19kikjcEtsi.png)
</center>
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
~~~

<center>
![separador.png](https://files.peakd.com/file/peakd-hive/rafaelaquino/23uFPJhEN7pXCFuUPACERgPpACAageNzbGoxYWb4RbcMBnbuk7NWs5SLMiH6e629fH5Tb.png)
</center>

#### 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=
~~~

<center>
![separador.png](https://files.peakd.com/file/peakd-hive/rafaelaquino/23uFPJhEN7pXCFuUPACERgPpACAageNzbGoxYWb4RbcMBnbuk7NWs5SLMiH6e629fH5Tb.png)
</center>

#### 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.

<center>
![0_14__5.png](https://files.peakd.com/file/peakd-hive/rafaelaquino/23tGZmVjo31t2M4vNtXdSrJ5KKNybfks5t4Sn7iePwnnXdPF8zDTffUKB6y4UkM3PWRLD.png)
</center>
Puedes profundizar en el siguiente enlace el tema de [Heredoc](https://es.wikipedia.org/wiki/Here_document). 

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
~~~
<center>
![separador.png](https://files.peakd.com/file/peakd-hive/rafaelaquino/23uFPJhEN7pXCFuUPACERgPpACAageNzbGoxYWb4RbcMBnbuk7NWs5SLMiH6e629fH5Tb.png)
</center>
#### 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

{1} [Curso de Linux N03](https://peakd.com/hive-154226/@rafaelaquino/curso-de-linux-n03-tuberias-pipelines-grep-sort-env-printenv-bash)

Temas Tratados:
* Shebang, hash-bang o sharpbang (#!)
* Distintas formas de ubicar nuestro Shell: /bin/bash
* Nuestro primer Script en Bash


{2} [Curso de Linux N04](https://peakd.com/hive-154226/@rafaelaquino/curso-de-linux-n04-apropos-man-k-uniq-type-bashcurso02)

Temas Tratados:
* Uso de Nano
* Comandos echo, date y cal, Coemntarios
* Ejecutando nuestros scripts
* variables en Bash

{3} [Curso de Linux N09](https://peakd.com/hive-154226/@rafaelaquino/curso-de-linux-n09-miscelaneas03-instalacion-de-mint-bashcurso) 


Temas Tratados:

* Concatenando Variables
* Visualizando con echo: HOSTNAME, USER, HOME


{4} [Curso de Linux N10.](https://peakd.com/hive-154226/@rafaelaquino/curso-de-linux-n10-enlace-simbolico-1-bashcurso)

Temas Tratados:
* Concatenando Texto con **echo**
* Comillas dobles con **echo**

{5} [Curso de Linux N11](https://peakd.com/hive-154226/@rafaelaquino/curso-de-linux-n11-enlace-simbolico-2-bashcurso)

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

<center>
![separador.png](https://files.peakd.com/file/peakd-hive/rafaelaquino/23uFPJhEN7pXCFuUPACERgPpACAageNzbGoxYWb4RbcMBnbuk7NWs5SLMiH6e629fH5Tb.png)
</center>

>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. 


<center>
![bannerfundamentos.png](https://files.peakd.com/file/peakd-hive/rafaelaquino/23x12wZzMf7DjB6GW52zsevyqz1Uuxc7cWjU95QzeTkZJ2BF1rU3Bka4NmgY8zYxuWcSw.png)
</center>

##### Trabajando con nuestro repositorio en GitLab

El repositorio de los ejercicios de Bash se creó en mi laptop ([Puedes ver la publicación](https://peakd.com/hive-154226/@rafaelaquino/curso-de-linux-n12-miscelaneas04-repositorio-en-gitlab-de-ejercicios-en-bash-1)), en este momento estoy usando la PC, entonces cloné el repositorio en este equipo([Ver como clonar repositorio](https://peakd.com/hive-154226/@rafaelaquino/curso-de-linux-n13-miscelaneas05-repositorio-en-gitlab-de-ejercicios-en-bash-2)).

Se revisó el repositorio en GitLAb, donde se determina que hay un nuevo script.

<center>
![0_14fundament_2.png](https://files.peakd.com/file/peakd-hive/rafaelaquino/23tSzChULoLwrweRfa7oxZsc8Dd4WBh57JssCfo7Q8B4eDY1ogUNeo5936fZTG1D6Lhhy.png)
</center> 

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**.
<center>
![0_14fundament_1.png](https://files.peakd.com/file/peakd-hive/rafaelaquino/23t797VNVVVUZuQ2k9niYD6o2uigTXCdoDXAmLwvcJG7hV5XXdAX8qw9EJv6uTZMTd45e.png)
</center>

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
~~~
[Ver repositorio de ejercicios](https://gitlab.com/btcsiraquino/hp_bash_ejercicios)

---

##### Practicando enlace simbólico
Aquí un uso del enlace simbólico.
<center>
![0_14fundament_3.png](https://files.peakd.com/file/peakd-hive/rafaelaquino/23swkNhVZXmhwCvJ1Umqh4ZdUvsh9fGCoqFk1ZqWSiSBCzVzsPeCCPqspgqemsFojGbwe.png)
</center>

---
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.---

[Mi Twitter](https://twitter.com/Rafa_elaquino)
👍  , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , and 332 others
properties (23)
authorrafaelaquino
permlinkcurso-de-linux-n14-programacion-en-bash-001-variables-argumentos-shift-comentarios-palabras-reservadas
categoryhive-154226
json_metadata{"app":"peakd/2023.8.1","format":"markdown","tags":["developer","spanish","linux","stemsocial","stem-espanol","neoxian","tribes","freesoftware","opensource","softwarelibre"],"users":["rafaelaquino"],"image":["https://files.peakd.com/file/peakd-hive/rafaelaquino/48jibtEVsncTVbhFgKs9nRYUm4nxVTnYAGCgDAVQU5QfXr5AoBDsrTVXbExoYt3gzW.png","https://files.peakd.com/file/peakd-hive/rafaelaquino/23wzvMoqqWSKfdAQe16wTV4VBydv67FCPeZeuGZJDnQoXysr6m1ECbfFg7PVLZGq1kXCC.png","https://files.peakd.com/file/peakd-hive/rafaelaquino/23swigLghRszDpgZJa75JrAqiTFVWhSBxQAkecN8rySTMrosZAvh1QGvFEkVe9AYFwnzu.png","https://files.peakd.com/file/peakd-hive/rafaelaquino/23uFPJhEN7pXCFuUPACERgPpACAageNzbGoxYWb4RbcMBnbuk7NWs5SLMiH6e629fH5Tb.png","https://files.peakd.com/file/peakd-hive/rafaelaquino/23swib4S9b1eL9SUV6mxN1fNJQKxvzXvcM9QDqzbGpjewPyWKtwAzH1VcYFugwSxFVnvo.png","https://files.peakd.com/file/peakd-hive/rafaelaquino/23swiWAiVyML1Lpe9ideVCPJ9n34PJfn5QNm7cLAkvKg2vKXi4z9qGhUdMtsh6xTPQYnn.png","https://files.peakd.com/file/peakd-hive/rafaelaquino/23swkEXHxQkaC2ibMhkHTdhjzHr4bEEnVNrMqKeC7CRbgJELTyDzR1Enhg19kikjcEtsi.png","https://files.peakd.com/file/peakd-hive/rafaelaquino/23tGZmVjo31t2M4vNtXdSrJ5KKNybfks5t4Sn7iePwnnXdPF8zDTffUKB6y4UkM3PWRLD.png","https://files.peakd.com/file/peakd-hive/rafaelaquino/23x12wZzMf7DjB6GW52zsevyqz1Uuxc7cWjU95QzeTkZJ2BF1rU3Bka4NmgY8zYxuWcSw.png","https://files.peakd.com/file/peakd-hive/rafaelaquino/23tSzChULoLwrweRfa7oxZsc8Dd4WBh57JssCfo7Q8B4eDY1ogUNeo5936fZTG1D6Lhhy.png","https://files.peakd.com/file/peakd-hive/rafaelaquino/23t797VNVVVUZuQ2k9niYD6o2uigTXCdoDXAmLwvcJG7hV5XXdAX8qw9EJv6uTZMTd45e.png","https://files.peakd.com/file/peakd-hive/rafaelaquino/23swkNhVZXmhwCvJ1Umqh4ZdUvsh9fGCoqFk1ZqWSiSBCzVzsPeCCPqspgqemsFojGbwe.png"]}
created2023-09-11 16:55:00
last_update2023-09-11 17:13:30
depth0
children1
last_payout2023-09-18 16:55:00
cashout_time1969-12-31 23:59:59
total_payout_value1.837 HBD
curator_payout_value1.783 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length12,983
author_reputation110,423,639,605,208
root_title"Curso de Linux N14. Programación en Bash 001: Variables, argumentos, shift, comentarios, palabras reservadas"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id127,054,865
net_rshares9,042,111,886,663
author_curate_reward""
vote details (396)
@stemsocial ·
re-rafaelaquino-curso-de-linux-n14-programacion-en-bash-001-variables-argumentos-shift-comentarios-palabras-reservadas-20230913t111843349z
<div class='text-justify'> <div class='pull-left'>
 <img src='https://stem.openhive.network/images/stemsocialsupport7.png'> </div>

Thanks for your contribution to the <a href='/trending/hive-196387'>STEMsocial community</a>. Feel free to join us on <a href='https://discord.gg/9c7pKVD'>discord</a> 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.&nbsp;<br />&nbsp;<br />
</div>
properties (22)
authorstemsocial
permlinkre-rafaelaquino-curso-de-linux-n14-programacion-en-bash-001-variables-argumentos-shift-comentarios-palabras-reservadas-20230913t111843349z
categoryhive-154226
json_metadata{"app":"STEMsocial"}
created2023-09-13 11:18:42
last_update2023-09-13 11:18:42
depth1
children0
last_payout2023-09-20 11:18:42
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length565
author_reputation22,918,491,691,707
root_title"Curso de Linux N14. Programación en Bash 001: Variables, argumentos, shift, comentarios, palabras reservadas"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id127,107,531
net_rshares0