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 $# .