diff --git a/.obsidian/graph.json b/.obsidian/graph.json index 31d8df2..09cb840 100644 --- a/.obsidian/graph.json +++ b/.obsidian/graph.json @@ -60,6 +60,6 @@ "repelStrength": 10, "linkStrength": 1, "linkDistance": 250, - "scale": 0.19753086419753046, + "scale": 0.2962962962962957, "close": true } \ No newline at end of file diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index e1aed9c..2b1c461 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -13,54 +13,12 @@ "state": { "type": "markdown", "state": { - "file": "Documentación personal/Mecanica de Unix/Mecánica Unix - Manejo de la shell.md", - "mode": "source", + "file": "Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Extra.md", + "mode": "preview", "source": false }, "icon": "lucide-file", - "title": "Mecánica Unix - Manejo de la shell" - } - }, - { - "id": "64d234a80b79e625", - "type": "leaf", - "state": { - "type": "markdown", - "state": { - "file": "BDD/SQL/Lenguaje de Manupulación de Datos (DML).md", - "mode": "source", - "source": false - }, - "icon": "lucide-file", - "title": "Lenguaje de Manupulación de Datos (DML)" - } - }, - { - "id": "407b94c3d0a283b0", - "type": "leaf", - "state": { - "type": "markdown", - "state": { - "file": "BDD/SQL/Importación y exportación de base de datos.md", - "mode": "source", - "source": false - }, - "icon": "lucide-file", - "title": "Importación y exportación de base de datos" - } - }, - { - "id": "7ff5d9bb1eecd3e1", - "type": "leaf", - "state": { - "type": "markdown", - "state": { - "file": "Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Arrays asociativos.md", - "mode": "source", - "source": false - }, - "icon": "lucide-file", - "title": "Arrays asociativos" + "title": "Extra" } } ] @@ -209,12 +167,12 @@ "state": { "type": "outgoing-link", "state": { - "file": "Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Funciones puras/Funciones puras.md", + "file": "Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Extra.md", "linksCollapsed": false, "unlinkedCollapsed": true }, "icon": "links-going-out", - "title": "Enlaces salientes de Funciones puras" + "title": "Enlaces salientes de Extra" } }, { @@ -264,29 +222,31 @@ }, "active": "e615f9321ff830be", "lastOpenFiles": [ - "Documentación personal/Mecanica de Unix/Mecánica Unix - Manejo de la shell.md", + "Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Extra.md", + "Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Procesos hijos y paralelismo.md", + "Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Señales.md", + "Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Funciones puras/Ejercicios/Ejercicios - Funciones puras.md", + "Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Funciones puras/Funciones puras.md", "Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Arrays asociativos.md", "Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Expansión de parámetros.md", - "Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Extra.md", "Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Patrones de diseño en Bash.md", - "Documentación personal/Mecanica de Unix/Sin nombre", + "Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Seguridad en scripts.md", + "Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Subshells.md", + "Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Trampas (traps).md", + "README.md", + "BDD/SQL/SQL.md", + "Documentación personal/Mecanica de Unix/Mecánica Unix - Manejo de la shell.md", "BDD/SQL/Importación y exportación de base de datos.md", + "BDD/SQL/Lenguaje de Manupulación de Datos (DML).md", + "Documentación personal/Mecanica de Unix/Sin nombre", "BDD/SQL/Lenguaje de definición de datos (DDL).md", "BDD/SQL/Diario/Clase 4 de diciembre.md", "BDD/SQL/Sintaxis (Keywords).md", "BDD/SQL/Tipos de datos.md", "BDD/SQL/Procedimientos almacenados.md", - "BDD/SQL/Lenguaje de Manupulación de Datos (DML).md", "Documentación personal/Mecanica de Unix/2. awk-sed-grep/Parsing avanzado de logs.md", - "BDD/SQL/SQL.md", "Servidores/M5/Actividades/RA2/M5RA2P1.md", - "README.md", "Servidores/M5/M5 - ASIX.md", - "Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Funciones puras/Ejercicios/Ejercicios - Funciones puras.md", - "Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Funciones puras/Funciones puras.md", - "Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Procesos hijos y paralelismo.md", - "Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Seguridad en scripts.md", - "Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Señales.md", "conflict-files-obsidian-git.md", "Servidores/M5/Actividades", "Servidores/M5/Actividades/RA2", @@ -294,8 +254,6 @@ "Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Funciones puras/Ejercicios/calculadora_modular.sh", "Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Funciones puras/Ejercicios", "Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Funciones puras", - "Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Subshells.md", - "Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Trampas (traps).md", "Documentación personal/Mecanica de Unix/2. awk-sed-grep", "Sin título.base", "Documentación personal/Mecanica de Unix/Bash Scripting/Sin nombre", diff --git a/Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Extra.md b/Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Extra.md index 1acaec9..e522f55 100644 --- a/Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Extra.md +++ b/Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Extra.md @@ -2,3 +2,40 @@ Proveniente de [[Mecánica Unix - Manejo de la shell]] --- +## Control de flujo +--- +### Condicionales `if`, `elif`, `else` y `fi` +```Shell +if [[ "$num" -gt 10 ]]; then + echo "Mayor que 10" +elif [[ "$num" -eq 10 ]]; then + echo "Es 10" +else + echo "Es menor que 10" +fi +``` + +--- + +### `[[ . . . ]]` +```Shell +if [[ "$x" == "hola" && -n "$x" ]]; then + echo "coincide" +fi +``` + +--- + +### `!` (negación) +``` Shell +if ! grep -q "hola" archivos.txt; then + echo "no existe hola" +fi +``` + + + + + + + diff --git a/Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Funciones puras/Ejercicios/Ejercicios - Funciones puras.md b/Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Funciones puras/Ejercicios/Ejercicios - Funciones puras.md index 9926c1a..d208797 100644 --- a/Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Funciones puras/Ejercicios/Ejercicios - Funciones puras.md +++ b/Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Funciones puras/Ejercicios/Ejercicios - Funciones puras.md @@ -6,7 +6,66 @@ Proveniente de [[Funciones puras]] # 1. Calculadora modular Objetivo: Separación de lógica (pura) del I/O (impuro). +```Shell +#!/bin/bash +#Funciones Puras +suma() { +local num1=$1 +local num2=$2 +echo $(( $num1 + $num2 )) +} +resta() { +local num1=$1 +local num2=$2 +echo $(( $num1 - $num2 )) +} -Bibliografia Web: -- [Manejo de errores en Bash Scripting](https://adictosalinux.com/manejo-errores-scripts-bash/) \ No newline at end of file +multiplicacion() { +local num1=$1 +local num2=$2 +echo $(( $num1 * $num2 )) +} + +division() { +local num1=$1 +local num2=$2 +if [[ "$num2" -eq 0 ]]; then + echo "ERROR_DIV_0" + return 1 +fi +echo $(( $num1 / $num2 )) +} + +#Menu + +echo "Opciones posibles:" +echo "1. Sumar" +echo "2. Restar" +echo "3. Multiplicacion" +echo "4. Division" +read input +read -p "Introduce el primer numero: " a +read -p "Introduce el segundo numero: " b + +case $input in +1) resultado=$(suma "$a" "$b");; +2) resultado=$(resta "$a" "$b");; +3) resultado=$(multiplicacion "$a" "$b");; +4) resultado=$(division "$a" "$b") +if [[ $b -eq 0 ]]; then + echo "No se puede dividir entre 0" + exit 1 +fi;; +*) + echo "no valido" + exit 1;; +esac + +echo "Resultado = $resultado" +``` + +Bibliografía Web: +- [Manejo de errores en Bash Scripting](https://adictosalinux.com/manejo-errores-scripts-bash/) +- [Comparator operators](https://www.tutorialkart.com/bash-shell-scripting/bash-comparison-operators/) +- [Funciones Bash](https://itsfoss.com/es/funciones-bash/) diff --git a/Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Funciones puras/Ejercicios/calculadora_modular.sh b/Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Funciones puras/Ejercicios/calculadora_modular.sh index f282e71..e2e0e7f 100755 --- a/Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Funciones puras/Ejercicios/calculadora_modular.sh +++ b/Documentación personal/Mecanica de Unix/1. Bash Scripting Avanzado/Funciones puras/Ejercicios/calculadora_modular.sh @@ -1,44 +1,62 @@ #!/bin/bash +#Funciones Puras +suma() { + local num1=$1 + local num2=$2 + echo $(( $num1 + $num2)) +} + +resta() { + local num1=$1 + local num2=$2 + echo $(( $num1 - $num2)) +} + +multiplicacion() { + local num1=$1 + local num2=$2 + echo $(( $num1 * $num2)) +} + +division() { + local num1=$1 + local num2=$2 + if [[ "$num2" -eq 0 ]]; then + echo "ERROR_DIV_0" + return 1 + fi + echo $(( $num1 / $num2)) +} + + +# Menu echo "Opciones posibles:" echo "1. Sumar" echo "2. Restar" echo "3. Multiplicacion" echo "4. Division" read input + +read -p "Introduce el primer numero: " a +read -p "Introduce el segundo numero: " b + case $input in - 1) $suma;; - 2) $resta;; - 3) $multiplicacion;; - 4) $division;; + 1) resultado=$(suma "$a" "$b");; + 2) resultado=$(resta "$a" "$b");; + 3) resultado=$(multiplicacion "$a" "$b");; + 4) resultado=$(division "$a" "$b") + if [[ $b -eq 0 ]]; then + echo "No se puede dividir entre 0" + exit 1 + fi + ;; + *) + echo "no valido" + exit 1;; esac +echo "Resultado = $resultado" -suma() { - local num1=$1 - local num2=$2 - echo $(( $1 + $2)) -} -resta() { - local num1=$1 - local num2=$2 - echo $(( $1 - $2)) -} - -multiplicacion() { - local num1=$1 - local num2=$2 - echo $(( $1 * $2)) -} - -division() { - local num1=$1 - local num2=$2 - if [[ "$2" -eq 0 ]]; then - echo "ERROR_DIV_0" - return 1 - fi - echo $(( $1 / $2)) -}