shell
Diferencias
Muestra las diferencias entre dos versiones de la página.
| Próxima revisión | Revisión previa | ||
| shell [2012/11/08 12:52] – creado lmateu | shell [2014/11/03 23:51] (actual) – lmateu | ||
|---|---|---|---|
| Línea 2: | Línea 2: | ||
| Este capítulo está excelentemente explicado en los | Este capítulo está excelentemente explicado en los | ||
| - | apuntes de Patricio Poblete en la sección. | + | apuntes de Patricio Poblete en la sección |
| + | [[http:// | ||
| + | |||
| + | A esta sección solo hay que agregar que el shell permite definir | ||
| + | funciones, que en la práctica se comportan como nuevos comandos. | ||
| + | Estos comandos son más eficientes que un nuevo archivo de comandos | ||
| + | porque cuando se lanzan no crean un nuevo proceso, si no que | ||
| + | son interpretados por el mismo shell en donde se lanzan. | ||
| + | |||
| + | Por ejemplo se puede definir una función que calcula el factorial | ||
| + | de un número: | ||
| + | |||
| + | < | ||
| + | factorial() | ||
| + | { | ||
| + | if [ " | ||
| + | i=`expr $1 - 1` | ||
| + | j=`factorial $i` | ||
| + | k=`expr $1 \* $j` | ||
| + | echo $k | ||
| + | else | ||
| + | echo 1 | ||
| + | fi | ||
| + | } | ||
| + | |||
| + | while true | ||
| + | do | ||
| + | echo "Enter a number:" | ||
| + | read x | ||
| + | factorial $x | ||
| + | done | ||
| + | </ | ||
| + | |||
| + | En las primeras versiones del shell de Unix no había ningún mecanismo predefinido para realizar cálculos aritméticos. | ||
| + | |||
| + | Hoy en día, sí se han agregado esas características al shell porque lanzar comandos significa crear nuevos procesos y por lo tanto evaluar una expresión aritmética o comparar expresiones resultaba ineficiente. | ||
| + | |||
| + | < | ||
| + | factorial() | ||
| + | { | ||
| + | if [ " | ||
| + | then | ||
| + | f=`factorial $(($1 - 1))` | ||
| + | echo $(($1 * $f)) | ||
| + | else | ||
| + | echo 1 | ||
| + | fi | ||
| + | } | ||
| + | </ | ||
shell.1352379127.txt.gz · Última modificación: por lmateu
