Created
February 25, 2023 02:12
-
-
Save 4DRIAN0RTIZ/88a52ac952df94fe942119f8cba32c84 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# BASH | |
#### Contenido | |
1. [Variables](#variables) | |
2. [Condicionales](#condicionales) | |
3. [Ciclos](#ciclos) | |
--- | |
## Variables | |
Sitio donde guardas cosas. A la hora de declarar la variable no se pone variable, pero al llamarla si, no se pone espacio entre el "=" y el valor. | |
_Ejemplo:_ variable=1 | |
> Importante: | |
> | |
> Las variables son case sensitive, lo que significa que para bash no es lo mismo "Hola" que "hola". | |
### Variables especiales | |
- $0 --> Nombre del script. | |
- $1 --> Primer parámetro pasado. | |
- $2 --> Segundo parámetro pasado. | |
- $# --> Número total de parámetros pasados. | |
- $@ --> Todos los parámetros pasados. | |
- $? --> Resultado de la ultima operacion, si esta bien pone 0 y si está mal pone 1. | |
- $ $ --> Id script ejecutado. | |
- $USER --> Nombre del usuario. | |
- $HOSTNAME --> Nombre de la máquina. | |
- $SECONDS --> Tiempo transcurrido desde el inicio del script. | |
- $RANDOM --> Arroja número aleatorio. | |
- $LINENO --> Número de líneas que se han ejecutado. | |
- $SHELL --> Nos dice la shell que se está utilizando. | |
- $EDITOR --> Nos dice el editor que estamos usando. | |
- $USERNAME --> Nombre del usuario. | |
- $PATH --> Directorios de los ejecutables del sistema. | |
> Cuidado con las comillas, no es lo mismo "" que '' ni que ´´ | |
```bash | |
#!/bin/bash | |
variable="Hola" | |
echo "$variable mundo" | |
echo '$variable mundo' | |
echo ´$variable mundo´ | |
``` | |
Salida: | |
```bash | |
Hola mundo | |
$variable mundo | |
mi-primer-script.sh: Línea 5: Hola: orden no encontrada. | |
``` | |
Como vemos en el ejemplo de arriba, en la primera opción que son las comillas dobles, nos lo ha tomado como queriamos, asignando el valor de la variable antes del otro string (mundo) | |
En la segunda opción que son las comillas simples, nos imprime tal cual lo que escribamos, sin tomar en cuenta el valor de la variable. | |
La tercera opción puede ser la más confusa, ya que con las comillas cursivas raras esas, es como si quiereramos que se ejecutara el contenido ($variable mundo), un ejemplo sería: | |
```bash | |
echo ´echo $variable mundo´ | |
``` | |
> NOTA: | |
> El ejemplo de arriba es exactamente lo mismo que $() | |
> | |
> variable=$(ls -la) | |
> | |
> variable=´ls -la´ | |
> Ambos regresaran lo mismo, en lo personal es mejor utilizar la primera opción. | |
### Operaciones matematicas | |
```bash | |
Resultado=$((2+2)) | |
echo $Resultado | |
``` | |
## Condicionales | |
### If | |
```bash | |
#!/bin/bash | |
if [ "$1" = "Hola" ]; then | |
echo "Mundo" | |
fi | |
``` | |
En este script le estamos diciendo a bash que en caso de que el usuario le pase como primer argumento un "Hola" ejecutara "Mundo" | |
Cosas a resaltar del script de arriba: | |
- En la segunda línea _if [ $1 = "Hola" ]; then_ | |
> Entre el "then" y el cierre del corchete se encuentra un punto y coma, esto es por que bash interpreta línea por línea; entonces para indicarle que son dos comandos distintos en una misma linea colocamos el punto y coma. | |
- El condicional termina con fi, es decir "if" al reves, pasa lo mismo para los casos, pero eso lo veremos más adelante. | |
```bash | |
#!/bin/bash | |
if [ "$1" = "Hola" ]; then | |
echo "$1 Mundo" | |
elif [ "$1" = "Mundo" ]; then | |
echo "Hola" | |
elif [ ! -z "$1" ]; then | |
echo "Este parámetro no es válido. | |
else | |
echo "No me has pasado ningún parámetro | |
fi | |
``` | |
En el script de arriba vemos que se agregaron varias cosas: | |
- elif: Es una validación dentro de otra. | |
- !: Es diferente a... | |
- -z: El campo está vacío. | |
```bash | |
#!/bin/bash | |
if [ -d "hola" || -f "hola" && -r "hola" && -x "hola" && -w "hola" ]; then | |
echo "Existe" | |
else | |
echo "No existe" | |
fi | |
``` | |
En este ejemplo vemos lo siguiente: | |
- -d: Es un directorio. | |
- -f: Es un archivo. | |
- ||: Operador lógico or. | |
- -r: Tiene permisos de lectura. | |
- -x: Tiene permisos de ejecución. | |
- -w: Tiene permisos de escritura. | |
- &&: Operador lógico and. | |
> IMPORTANTE: | |
> | |
> En la segunda línea del script de arriba se puede sustituir los corchetes por test, quedando de la siguiente manera: | |
> | |
> ```bash | |
> #!/bin/bash | |
> if test -d "hola" || -f "hola" && -r "hola" && -w "hola" | |
> then | |
> echo "Existe | |
> else | |
> echo "No existe" | |
> fi | |
> ``` | |
> | |
> Usando doble corchete se pueden usar expresiones regulares. [[]] | |
### Case | |
```bash | |
#!/bin/bash | |
case $1 in | |
amarillo) | |
echo "optimismo" | |
;; | |
rojo) | |
echo "pasion" | |
;; | |
verde) | |
echo "vida" | |
;; | |
*) | |
echo "No válido" | |
;; | |
esac | |
``` |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment