So che gli script di shell eseguono semplicemente i comandi come se fossero eseguiti al prompt dei comandi. Mi piacerebbe essere in grado di eseguire script di shell come se fossero funzioni... Cioè, prendendo un valore di input o una stringa nello script. Come mi avvicino a farlo?
Risposta accettata:
Il comando shell e tutti gli argomenti di quel comando appaiono come numerati variabili della shell:$0 ha il valore stringa del comando stesso, qualcosa come script , ./script , /home/user/bin/script o altro. Tutti gli argomenti vengono visualizzati come "$1" , "$2" , "$3" e così via. Il conteggio degli argomenti è nella variabile della shell "$#" .
I modi comuni per affrontare questo problema coinvolgono i comandi della shell getopts e shift . getopts è molto simile al C getopt() funzione di libreria. shift sposta il valore di $2 a $1 , $3 a $2 , e così via; $# viene decrementato. Il codice finisce per guardare il valore di "$1" , facendo le cose usando un case …esac per decidere un'azione, quindi eseguire un shift per spostare $1 al prossimo argomento. Deve solo esaminare $1 e forse $# .