Cristian Córdova
Reinaldo Mendoza
primqt n/a
Hever Alfredo Morales Madrid
Juan Sánchez
Enzo Venturi
Juan Sánchez
Diego Andrés Beltrán Garavito
Esteban Blanco Ortuno
Enrique Villalobos Andrade
Juan Paulo Tapia
ricardo raul bascuñan dufau
Juan Carlos Zambrano Montealegre
Platzerito De Platzi
Platzerito De Platzi
Enzo Venturi
Marvin Javier Santos Fernández
Martín Steven Hernández Ortiz
Holmes Giovanny Salazar Osorio
Israel Yance
Marconi Poveda
Company_adminCarlos Mairena López
Carlos Mairena López
Emanuel Ferrero
Mario Alexander Vargas Celis
marco pablo demaio
José Carlos Vielman Mallada
juan CORSI
Juan José Mamani Tarqui
Les dejo unos pequeños apuntes:
COMPARANDO CADENAS
[[ [
< < = = != !=
COMPARANDO ENTEROS
[[ [ -gt -gt mayor -lt -lt menor -ge -ge mayor o igual -le -le menor o igual -eq -eq igual -ne -ne distinto
Ejemplo:
[[ 001 = 1 ]] es falso. Ya que la cadena de caractéres. No es la misma.
[[ 001 -eq 1 ]] es verdadero. Ya que los ceros a la izquierda no tienen valor. Por tanto 1 es igual a 1
OPERADORES BOOLEANOS
[[ [ && -a AND || -o OR
AGRUPACIÓN
Para agrupar operaciones booleanas puedes utilizar paréntesis con los dobles corchetes, mientras que en el caso de los simples corchetes deberás utilizar los paréntesis pero escapados.
OTROS COMPARADORES INTERESANTES
-d te permitirá saber si es un directorio y si existe-e lo mismo que en el caso anterior pero para archivos-r en este caso te permite saber si el archivo tiene permiso de lectura-s con esta opción puedes saber si el tamaño del archivo es mayor que cero. Es decir, que no se trata de un archivo vacío-w te permitirá identificar si el archivo tienen permisos de escritura-x lo mismo que en el caso anterior pero para el caso de permisos de ejecución.Corchetes simples [ ] vs Corchetes Dobles [[ ]]
Los dobles corchetes resultan ser una mejora respecto a los simples. Así, las diferencias entre uno y otro son las siguientes:
[ -f "$file" ] es equivalente a [[ -f $file ]].[[ puedes utilizar los operadores || y && , asi como < y >` para las comparaciones de cadena.=~ para expresiones regulares, compo por ejemplo [[ $respuesta =~ ^s(i)?$ ]][[ abc = a\* ]]Es posible que te preguntes por la razón para seguir utilizando [ corchete simple en lugar de doble. La cuestión es por compatibilidad. Si utilizas Bash en diferentes equipos es posible que te encuentres alguna imcompatibilidad. Así que depende de ti y de donde lo vayas a utilizar.
Me sirvio para aclarar algunas dudas, gracias
muy buen aporte porfin entiendo la diferencia entre [ ] vs [[]]
Operador Verdad (TRUE) si:
-d fichero fichero existe y es un directorio -e fichero fichero existe -f fichero fichero existe y es un fichero regular (no un directorio, u otro tipo de fichero especial)
[] es un alias del comando test, nos permite averiguar si un comando existe o un número es igual a otro, se ocupan los operadores: Ver lista de operadores [[]] es una mejora posterior al comando test, nos permite hacer todo lo mismo que con el comando test y además probar patrones(?) (()) Nos permite hacer comprobaciones aritméticas, da soporte a la mayor parte de los operadores aritméticos () Nos permite correr un comando en un subshell, retornando el codigo de salida para que se actúe respecto a ello comando Los comandos por lo general siempre retornan un comando de salida 0 o 1
Agregar además que
Una lista que ocupo a menudo con los operadores Muy recomendada
Hola... les dejo mis apuntes... saludos
# ! /bin/bash # programa para explicar explesiones condicionales # Author: Diego Beltran tw @diguitodev hista @diegodevelops edad=0 pais="" pathArchivo="" read -p "ingrese edad: " edad read -p "ingrese su país: " pais read -p "ingrese el path de su archivo: " pathArchivo echo -e "\nExpresiones condicionales con números" if [ $edad -lt 10 ]; then echo "la persona es un niño o niña" elif [ $edad -ge 10 ] && [ $edad -le 17 ]; then echo "se trata de un adolecente" else echo "la persona es mayopr de edad" fi echo -e "\nExpresiones condicionales con cadenas" if [ $pais = "EEUU" ]; then echo "la persona es americana" elif [ $pais == "Ecuador" ] || [ $pais = "Colombia" ]; then echo "la persona es latina" else echo "no sabemos su nacionalidad" fi echo -e "\nExpresiones condicionales con archivos" if [ -d $pathArchivo ]; then echo "El directorio $pathArchivo existe" else echo "El directorio $pathArchivo no existe" fi```
Me esta gustando este curso y el profesor explica bien.
GT -> Greater Than / mayor que / > LT -> Lower Than / menor que. / <
EEUU: la persona es norteamericana Ecuador / Colombia: la persona es sudamericana
ambos son Americanos.
Hola, favor para futuros cursos, no usar letras azules sobre paño negro, no se ve el texto.
Saludos
Como puedo trabajar con paths que llevan espacios?
Tengo el path: test de clase
No funcionan:
./test\ de\ clase './test de clase'
1er Bloque de Código:
2do Bloque de Código
3er Bloque de Código:
No hay forma de usar una condicional de RegEx sin tener que usar [[ ]] y =~ en BASH?
Hola!
Una pregunta, alguien sabe porque no funciona el shortcut del home ~ cuando se utiliza en el script.
Este es mi script:
Y este es el resultado, sin usar el shortcut y usandolo:
Quizás porque se está ejecutando con otro usuario y por eso la ruta es diferente. Es una suposición.
Lo que puedes hacer es imprimir en pantalla el nombre del usuario que está ejecutando el script para que puedas descartar.
whoami
A ver prueba y nos dices qué te sale.
El script espera una ruta específica en texto no un comando que tenga que interpretar. El símbolo de virguililla ~ es un comando interpretado por bash y nuestro script no está traduciendo, agarra el valor de la variable y lo compara tal cual, sin interpretarlo como lo haría bash.
Recomiendo colocar las comillas a las variables dentro de las condicionales IF, ya que por ejemplo, el nombre del país podría tener algún espacio, por ejemplo "Costa Rica".
if [ "$pais" == "EEUU" ]; then
Si no colocamos la variable $pais entre comillas dobles, al ingresar un valor de un país con espacios, tal cual se hizo en este ejercicio, entonces podremos tener el siguiente error
line xx: [: too many arguments
Esto claro, mientras la variable sea un valor de cadena de texto.
Malisimo este curso. No explico ninguno de los condicionales. Podria darlos todos para leerlos por lo menos
1. Condicionales numéricas
Estas comparan valores numéricos. Se suelen usar en scripts para verificar si una variable cumple con una condición específica.
2. Condicionales de cadenas
Estas permiten comparar cadenas de texto.
3. Condicionales de archivos
Estas expresiones verifican propiedades de archivos o directorios, lo cual es útil para ver si un archivo existe o si es ejecutable, por ejemplo.
4. Operadores lógicos
Se pueden combinar las expresiones condicionales anteriores usando operadores lógicos.
Las **expresiones condicionales en Bash** permiten evaluar condiciones lógicas dentro de un script para tomar decisiones. Se utilizan principalmente en estructuras como if, while o until. Aquí te explico algunos tipos de expresiones condicionales comunes:
### Operadores condicionales básicos:
1. **Comparaciones numéricas**:
- -eq: Igual a
- -ne: No igual a
- -gt: Mayor que
- -ge: Mayor o igual que
- -lt: Menor que
- -le: Menor o igual que
Ejemplo:
```bash
if [ "$num" -eq 5 ]; then
echo "El número es igual a 5."
fi
```
2. **Comparaciones de cadenas**:
- ==: Igual a
- !=: No igual a
- -z: Verdadero si la cadena es vacía
- -n: Verdadero si la cadena no es vacía
Ejemplo:
```bash
if [ "$nombre" == "Mario" ]; then
echo "Hola, Mario."
fi
```
3. **Condiciones sobre archivos**:
- -e: Existe
- -f: Es un archivo regular
- -d: Es un directorio
- -r: Tiene permisos de lectura
- -w: Tiene permisos de escritura
- -x: Tiene permisos de ejecución
Ejemplo:
```bash
if [ -f "/ruta/al/archivo.txt" ]; then
echo "El archivo existe."
fi
```
### Operadores lógicos:
1. **AND (&&)**:
Se cumple si ambas condiciones son verdaderas.
```bash
if [ "$edad" -ge 18 ] && [ "$edad" -lt 65 ]; then
echo "Eres un adulto."
fi
```
2. **OR (||)**:
Se cumple si al menos una de las condiciones es verdadera.
```bash
if [ "$edad" -lt 18 ] || [ "$edad" -ge 65 ]; then
echo "No estás en la edad adulta media."
fi
```
### Expresiones if con else y elif:
if \[ condición ]; then   \# Código si la condición es verdadera elif \[ otra\_condición ]; then   \# Código si la segunda condición es verdadera else   \# Código si ninguna condición es verdadera fi
### Ejemplo completo:
\#!/bin/bash read -p "Ingrese un número: " num if \[ "$num" -gt 10 ]; then   echo "El número es mayor que 10." elif \[ "$num" -eq 10 ]; then   echo "El número es igual a 10." else   echo "El número es menor que 10." fi
En este ejemplo, según el valor de la variable num, se evaluarán diferentes condiciones y se ejecutará el bloque correspondiente.
NO SE PUEDEN VER LAS CLASES. HACE YA 3 DÍAS QUE NO CARGA CORRECTAMENTE LOS VIDEOS, NO ES EL WIFI, NO ES LA PC ES LA PAGINA WEB. NO CARGAN, SE TRABAN CONSTANTE EMNTE.
IMPOSIBLE ESTUDIAR ASÍ.
PLATZI POR FAVOR SOLUCIONAR ESTO EN SUS SERVIDORES O LO QUE SEA, PORQUE VOY A TENER QUE ABANDONAR LA SUSCRIPCIÓN.
se puede cambiar de servidor si un no te funciona en la parte inferior derecha del video, al lado de la opción para poner pantalla completa el video
En Bash, el operador || se utiliza para realizar una operación lógica "O" (OR) en una expresión condicional. Puedes usar || para ejecutar un comando o una serie de comandos solo si el comando anterior falla (retorna un valor de error).
a principal diferencia entre [ <condición> ] y [[ <condición> ]] en Bash es que [ <condición> ] es un operador de comparación simple, mientras que [[ <condición> ]] es un operador de comparación que también puede evaluar expresiones aritméticas.
En otras palabras, [ <condición> ] solo puede comparar dos valores, mientras que [[ <condición> ]] puede comparar dos valores o evaluar una expresión aritmética.
Por ejemplo, el siguiente código es válido:
if [ $a -eq $b ]; then echo "Los valores son iguales" fi Este código compara los valores de las variables a y b. Si son iguales, se imprime el mensaje "Los valores son iguales".
El siguiente código también es válido:
if [[ $a -eq $b -o $a -gt $b ]]; then echo "Los valores son iguales o $a es mayor que $b" fi Este código compara los valores de las variables a y b. Si son iguales o si a es mayor que b, se imprime el mensaje "Los valores son iguales o $a es mayor que $b".
En este caso, el operador -o significa "o". Esto significa que la condición se cumplirá si a es igual a b o si a es mayor que b.
En general, se recomienda usar [[ <condición> ]] en lugar de [ <condición> ]. Esto se debe a que [[ <condición> ]] es más flexible y puede utilizarse para una gama más amplia de tareas.