Sé que los scripts de shell solo ejecutan comandos como si se ejecutaran en el símbolo del sistema. Me gustaría poder ejecutar scripts de shell como si fueran funciones… Es decir, tomar un valor de entrada o una cadena en el script. ¿Cómo me acerco a hacer esto?
Respuesta aceptada:
El comando de shell y cualquier argumento de ese comando aparecen como numerados variables de shell:$0
tiene el valor de cadena del comando en sí, algo así como script
, ./script
, /home/user/bin/script
o lo que sea. Cualquier argumento aparece como "$1"
, "$2"
, "$3"
y así. El conteo de argumentos está en la variable de shell "$#"
.
Las formas comunes de lidiar con esto involucran comandos de shell getopts
y shift
. getopts
es muy parecido a C getopt()
función de biblioteca. shift
mueve el valor de $2
a $1
, $3
a $2
, y así; $#
se decrementa. El código termina mirando el valor de "$1"
, haciendo cosas usando un case
…esac
para decidir sobre una acción, y luego hacer un shift
mover $1
al siguiente argumento. Solo tiene que examinar $1
, y tal vez $#
.