Skip to content

Commit b07cd94

Browse files
[Es] 010 bash conditionals - Add missing EOL (#94)
* Add missing empty lines at eof * 010-bash-conditionals [es] * Update ebook/es/content/006-bash-comments.md * Update ebook/es/content/007-bash-arguments.md * Update ebook/es/content/009-bash-conditional-expressions.md * Update ebook/es/content/010-bash-conditionals.md
1 parent b61454b commit b07cd94

File tree

4 files changed

+192
-3
lines changed

4 files changed

+192
-3
lines changed

ebook/es/content/006-bash-comments.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,5 @@ echo "Hola $nombre"
2323
echo "¡Bienvenido a DevDojo!"
2424
```
2525

26-
Los comentarios son una excelente manera de describir algunas de las funciones más complejas directamente en sus scripts para que otras personas puedan orientarse en su código con facilidad.
26+
Los comentarios son una excelente manera de describir algunas de las funciones más complejas directamente en sus scripts para que otras personas puedan orientarse en su código con facilidad.
27+

ebook/es/content/007-bash-arguments.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -74,4 +74,5 @@ echo "El nombre del archivo es: $0 y se va a autoeliminar."
7474
rm -f $0
7575
```
7676

77-
Debe tener cuidado con la eliminación automática y asegurarse de tener una copia de seguridad de su script antes de eliminarlo automáticamente.
77+
Debe tener cuidado con la eliminación automática y asegurarse de tener una copia de seguridad de su script antes de eliminarlo automáticamente.
78+

ebook/es/content/009-bash-conditional-expressions.md

-1
Original file line numberDiff line numberDiff line change
@@ -184,4 +184,3 @@ Al igual que con otros lenguajes de programación, puede usar las condiciones `A
184184

185185
```bash
186186
[[ $? -gt 0 ]]
187-
```
+188
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,188 @@
1+
# Condicionales de Bash
2+
3+
En la última sección, hemos cubierto algunas de las expresiones condicionales más populares. Ahora podemos usarlas con sentencias condicionales estándar como `if`, `if-else` y `switch case`.
4+
5+
## Sentencia If
6+
7+
El formato de una sentencia `if` en Bash es el siguiente:
8+
9+
```bash
10+
if [[ condicion ]]
11+
then
12+
<comandos>
13+
fi
14+
```
15+
16+
Aquí hay un ejemplo rápido que le pedirá que introduzca su nombre en caso de que lo haya dejado vacío:
17+
18+
```bash
19+
#!/bin/bash
20+
21+
# Ejemplo de sentencia if en Bash
22+
23+
read -p "¿Cuál es su nombre? " nombre
24+
25+
if [[ -z ${nombre} ]]
26+
then
27+
echo "¡Por favor, escriba su nombre!"
28+
fi
29+
```
30+
31+
## Sentencia If Else
32+
33+
Con una sentencia `if-else`, puede especificar una acción en caso de que la condición de la sentencia `if` no se cumpla. Podemos combinar esto con las expresiones condicionales de la sección anterior de la siguiente manera:
34+
35+
```bash
36+
#!/bin/bash
37+
38+
# Ejemplo de sentencia if en Bash
39+
40+
read -p "¿Cuál es su nombre? " nombre
41+
42+
if [[ -z ${nombre} ]]
43+
then
44+
echo "¡Por favor, introduzca su nombre!"
45+
else
46+
echo "Hola ${nombre}"
47+
fi
48+
```
49+
50+
Puede utilizar la sentencia if anterior con todas las expresiones condicionales de los capítulos anteriores:
51+
52+
```bash
53+
#!/bin/bash
54+
55+
admin="devdojo"
56+
57+
read -p "Introduzca su nombre de usuario " usuario
58+
59+
# Comprueba si el nombre de usuario proporcionado es el del administrador
60+
61+
if [[ "${usuario}" == "${admin}" ]] ; then
62+
echo "¡Usted es el usuario administrador!"
63+
else
64+
echo "¡Usted NO es el usuario administrador!"
65+
fi
66+
```
67+
68+
Aquí hay otro ejemplo de una sentencia `if` que comprobaría su actual `ID de usuario` y no le permitiría ejecutar el script como el usuario `root`:
69+
70+
```bash
71+
#!/bin/bash
72+
73+
if (( $EUID == 0 )); then
74+
echo "Por favor, no ejecutar como usuario root"
75+
exit
76+
fi
77+
```
78+
79+
Si pone esto encima de su script saldría en caso de que el EUID sea 0 y no ejecutaría el resto del script. Esto fue discutido en [el foro de la comunidad de DigitalOcean](https://www.digitalocean.com/community/questions/how-to-check-if-running-as-root-in-a-bash-script).
80+
81+
También puede probar múltiples condiciones con una sentencia `if`. En este ejemplo queremos asegurarnos de que el usuario no es ni el usuario administrador ni el usuario root para asegurarnos de que el script es incapaz de causar demasiado daño. Usaremos el operador `or` en este ejemplo, señalado por `||`. Esto significa que cualquiera de las condiciones debe ser verdadera. Si usáramos el operador `and` de `&&` entonces ambas condiciones tendrían que ser verdaderas.
82+
83+
```bash
84+
#!/bin/bash
85+
86+
admin="devdojo"
87+
88+
read -p "Introduzca su nombre de usuario " usuario
89+
90+
# Comprueba si el nombre de usuario proporcionado es el del administrador
91+
92+
if [[ "${usuario}" != "${admin}" ]] || [[ $EUID != 0 ]] ; then
93+
echo "Usted no es el usuario admin o root ¡pero por favor tenga cuidado!"
94+
else
95+
echo "¡Usted es el usuario administrador! ¡Esto podría ser muy destructivo!"
96+
fi
97+
```
98+
99+
Si tiene múltiples condiciones y escenarios, entonces puede usar la sentencia `elif` con las sentencias `if` y `else`.
100+
101+
```bash
102+
#!/bin/bash
103+
104+
read -p "Introduzca un número: " num
105+
106+
if [[ $num -gt 0 ]] ; then
107+
echo "El número es positivo"
108+
elif [[ $num -lt 0 ]] ; then
109+
echo "El número es negativo"
110+
else
111+
echo "El número es 0"
112+
fi
113+
```
114+
115+
## Sentencias switch case
116+
117+
Al igual que en otros lenguajes de programación, puede utilizar una sentencia `case` para simplificar las condiciones complejas cuando hay varias opciones diferentes. Así, en lugar de usar varias sentencias `if`, e `if-else`, puede usar una sola sentencia `case`.
118+
119+
La sintaxis de la sentencia `case` de Bash tiene el siguiente aspecto:
120+
121+
```bash
122+
case $alguna_variable in
123+
124+
patrón_1)
125+
comandos
126+
;;
127+
128+
patrón_2| patrón_3)
129+
comandos
130+
;;
131+
132+
*)
133+
comandos por defecto
134+
;;
135+
esac
136+
```
137+
138+
Un rápido resumen de la estructura:
139+
140+
* Todas las sentencias `case` comienzan con la palabra clave `case`.
141+
* Al igual que la palabra clave `case`, necesita especificar una variable o una expresión seguida de la palabra clave `in`.
142+
* Después de eso, tiene sus patrones `case`, donde necesita usar `)` para identificar el final del patrón.
143+
* Puede especificar múltiples patrones divididos por una tubería: `|`.
144+
* Después del patrón, usted especifica los comandos que le gustaría que se ejecutaran en caso de que el patrón coincida con la variable o la expresión que ha especificado.
145+
* Todas las cláusulas deben terminar añadiendo `;;` al final.
146+
* Puede tener una sentencia por defecto añadiendo un `*` como patrón.
147+
* Para cerrar la sentencia `case`, utilice la palabra clave `esac` (case escrito al revés).
148+
149+
Este es un ejemplo de una sentencia `case` de Bash:
150+
151+
```bash
152+
#!/bin/bash
153+
154+
read -p "Introduzca el nombre de su marca de automóvil: " automovil
155+
156+
case $automovil in
157+
158+
Tesla)
159+
echo -n "La fábrica de automóviles de ${automovil} está en EE.UU.".
160+
;;
161+
162+
BMW | Mercedes | Audi | Porsche)
163+
echo -n "La fábrica de automóviles de ${automovil} está en Alemania".
164+
;;
165+
166+
Toyota | Mazda | Mitsubishi | Subaru)
167+
echo -n "La fábrica de automóviles de ${automovil} está en Japón".
168+
;;
169+
170+
*)
171+
echo -n "${automovil} es una marca de automóviles desconocida."
172+
;;
173+
174+
esac
175+
```
176+
177+
Con este script, pedimos al usuario que introduzca el nombre de una marca de coche como Telsa, BMW, Mercedes, etc.
178+
179+
A continuación, con una sentencia `case`, comprobamos el nombre de la marca y si coincide con alguno de nuestros patrones, imprimimos la ubicación de la fábrica.
180+
181+
Si el nombre de la marca no coincide con ninguna de nuestras sentencias `case`, mostraremos nuestro mensaje por defecto: `es una marca de automóviles desconocida`.
182+
183+
## Conclusión
184+
185+
Le aconsejo intentar modificar el script y jugar con él un poco ¡así puede practicar lo que ha aprendido en los últimos dos capítulos!
186+
187+
Para más ejemplos de sentencias `case` de Bash, asegúrese de ir al capítulo 16, donde crearemos un menú interactivo en Bash usando sentencias `case` para procesar la entrada del usuario.
188+

0 commit comments

Comments
 (0)