---
title: "#ComandOS — Bash como lenguaje de programación"
url: "https://fcuba.net/threads/11826-comandos-bash-como-lenguaje-de-programacion"
forum: "Foro UIJ"
author: "L VNÐØ"
published: "2018-02-19T19:33:18.000Z"
updated: "2018-02-19T19:33:18.000Z"
page: 1
pages: 1
---

# #ComandOS — Bash como lenguaje de programación

In [Foro UIJ](https://fcuba.net/forums/433-foro-uij.md), started by L VNÐØ on 2018-02-19T19:33:18.000Z.

## L VNÐØ, [2018-02-19T19:33:18.000Z](https://fcuba.net/threads/11826-comandos-bash-como-lenguaje-de-programacion#post-143396)

> En este artículo vamos a ver algunas de las características de Bash que le permiten funcionar como un lenguaje de programación. Cabe decir que Bash no es un lenguaje de propósito general sino más bien orientado a la administración de sistemas y automatización de tareas.
> Variables
>
> Una variable es un identificador que almacena cierto valor, veamos como definir algunas.
> $ nombre=“Anonymous”
> $ declare -i edad=20+3 //Variables de tipo entero
> $ idiomas=(español ingles latin hebreo chino)
> Las reglas para nombrar variables son las mismas que en la mayoría de los lenguajes: letras, guion bajo, números, el nombre no debe iniciar con número. Para recuperar el valor de una variable anteponga un $ al nombre de la variable.
> $ echo “Mi nombre es $nombre y tengo $edad años y hablo ${idiomas\[@\]}”
>
> **Variables predefinidas **
> Bash define algunas variables por defecto, muy útiles cuando trabajamos con scripts.
>
> - $\# //Número de argumentos pasados a un comando.
> - $? //Valor de salida del último comando.
> - $$ //Número de proceso del shell.
> - $0 //Nombre del comando que se esta ejecutando.
> - $n //Valores de los argumentos. $1 es el primer parámetro, $2 el segundo parámetro, etc.
> - “$\*” //Todos los argumentos como una cadena (“$1 $2 …”).
> - “$@” //Todos los argumentos entre comillas dobles de forma individual.
>
> **Arreglos**
> Bash provee dos tipos de arreglos, basados en índices (los índices son números) y asociativos (los índices son cadenas).
> $ idiomas=(español ingles latín hebreo chino)
>
> $ echo ${idiomas\[0\]} español
> $ echo ${idiomas\[1\]} ingles
> $ declare -A P=( \[mexico\]=52 \[bolivia\]=591 \[canada\]=11 )
> $ echo ${P\[mexico\]}
> 52
> **Operaciones sobre arreglos:**
> ${arreglo
>
> *} Valor en el índice i
>
> ${arreglo\[\*\]} Todos los elementos
> ${arreglo\[@\]} Todos los elementos
> ${\#name\[\*\]} Número de elementos en el arreglo
> ${\#name\[@\]} Número de elementos en el arreglo
> **Expresiones aritméticas**
> Las operaciones aritméticas se puede realizar con $(( expresión )).
> $ echo $(( (2\*\*10)/2 ))512
>
> $ a=3; b=10;
> $ echo $(( a += b ))
> $ echo $a
> 13
>
> Los operadores en su mayoría son los mismos que en C/C++, salvo algunas excepciones, la exponenciación(\*\*), por ejemplo.
> **Estructuras de Control**
> Las estructuras de control permiten guiar el flujo de ejecución de un programa. Bash provee if, if … else y if … elif … else.
> **IF**
> if COMANDOS-DE-PRUEBA
> then
> BLOQUE-DE-COMANDOS
> fi
>
> **Ej.**
> if \[ $edad -lt 18 \]
> then
> echo “Fuera de aquí. Solo para
> adultos.”;
> fi
> **If … else**
> if COMANDOS-DE-PRUEBA
> then
> BLOQUE-DE-COMANDOS-1
> else
> BLOQUE-DE-COMANDOS-2
> fi
>
> **Ej.**
> if \[ $edad -ge 18 \]
> then
> echo “Adelante.”;
> else
> echo “Fuera de aquí. Solo para
> adultos.”;
> fi
> **If … elif … else**
> if COMANDOS-DE-PRUEBA
> then
> BLOQUE-DE-COMANDOS-1
> elif COMANDOS-DE-PRUEBA
> BLOQUE-DE-COMANDOS-2
> fi
>
> **Ej.**
> if \[ $edad -ge 18 \]
> then
> echo “Adelante.”;
> elif \[ $influyente \]
> echo “Adelante por favor”;
> else
> echo “Fuera de aquí. Solo para
> adultos.”;
> fi
>
> Para las comparaciones he utilizado algunos operadores diferentes a los convencionales, como son
>
> - lt Menor que.
> - ge Mayor o igual a.
>
>
> Véase man para más información sobre los operadores de comparación.
> **Estructuras de repetición**
> Bash soporta las estructuras while y for para repetición de operaciones. Su sintaxis es la siguiente.
> **For**
> for argumento in \[lista\]
> do
> comando(s)…
> done
>
> **Ej.**
> for i in {1..10}
> do
> echo $(( i\*\*2 ));
> done
> **While**
> while \[ condición \]
> do
> comando(s)…
> done
>
> **Ej.**
> while read archivo
> do
> rm “$archivo“;
> done &lt; &lt;(ls -1)
> **Scripts**
> Un script no es más que una serie de comandos y operaciones guardadas en un archivo, listos para ser ejecutados por Bash. La estructura de un script es la siguiente.
> \#!/bin/bash
> comando-1;
> comando-2;
> .
> .
> comando-n;
> exit 0;
>
> La primer línea especifíca con que comando deben ser ejecutados los comandos en el archivo. El contenido de la primera línea es conocido como shebang.
> **A probar nuestros scripts**
> Existen básicamente dos formas de ejecutar un script. Invocar bash pasando como argumento el el archivo o dando permisos de ejecución al script, y se ejecuta como cualquier otro comando.
> $ bash mi\_script.sh \# primera forma
> $ chmod +x mi\_script.sh \#segunda forma
> $ ./mi\_script.sh
> **Conclusión**
> Bash es una herramienta poderosa y extensa, hablar a profundidad del tema involucraría cientos de páginas y ciertamente no cuento con el conocimiento suficiente. En este articulo solo hemos visto algunas de las características básicas pero que considero suficiente para iniciarse. Además recalcar que lo antes visto es unicamente referente a Bash. Disculpen lo extenso del articulo.
> Saludos a todos*
