Altro
Passare parametri a una funzione Bash
Sto provando a cercare come passare parametri in una funzione Bash, ma quello che viene fuori è sempre come passare parametri dalla linea di comando.
Vorrei passare dei parametri all'interno del mio script. Ho provato:
myBackupFunction("..", "...", "xx")
function myBackupFunction($directory, $options, $rootPassword) {
...
}
Ma la sintassi non è corretta, come passare un parametro alla mia funzione?
893
3
Ci sono due modi tipici di dichiarare una funzione. Io preferisco il secondo approccio.
o
Per chiamare una funzione con argomenti:
La funzione si riferisce agli argomenti passati per la loro posizione (non per nome), cioè $1, $2, e così via. $0 è il nome dello script stesso.
Esempio:
Inoltre, dovete chiamare la vostra funzione dopo che è stata dichiarata.
Output:
Riferimento: Advanced Bash-Scripting Guide.
La conoscenza dei linguaggi di programmazione di alto livello (C/C++/Java/PHP/Python/Perl ...) suggerirebbe al profano che le funzioni bash dovrebbero lavorare come fanno in questi altri linguaggi. Invece, le funzioni bash lavorano come comandi di shell e si aspettano che gli argomenti vengano passati a loro nello stesso modo in cui si potrebbe passare un'opzione a un comando di shell (ls -l). In effetti, gli argomenti delle funzioni in bash sono trattati come parametri posizionali (
$1, $2..$9, ${10}, ${11}
, e così via). Questo non è una sorpresa considerando come funzionagetopts
. Le parentesi non sono necessarie per chiamare una funzione in bash.(Nota: mi capita di lavorare su Open Solaris al momento).
Mancano le parentesi e le virgole:
e la funzione dovrebbe apparire così: