dispiace per la domanda così innocente - ho solo cercare di undertand ...Perché "declare -f" e "declare -a" sono necessari negli script di bash?
Per esempio - ho:
$ cat test.sh
#!/bin/bash
declare -f testfunct
testfunct() {
echo "I'm function"
}
testfunct
declare -a testarr
testarr=([1]=arr1 [2]=arr2 [3]=arr3)
echo ${testarr[@]}
E quando l'eseguo ottengo:
$ ./test.sh
I'm function
arr1 arr2 arr3
Così qui è una domanda - per cosa devo (se necessario ...) inserire declare
qui? Con esso - o senza di esso funziona lo stesso ...
Posso capire ad esempio declare -i var
o declare -r var
. Ma per cosa è -f
(funzione di dichiarazione) e -a
(dichiarare matrice)?
Grazie per suggerimenti e collegamenti.
L'uso più comune di 'declare' è all'interno di funzioni, dove si comporta equivale a' local' quando dato nessun flag. Può anche essere necessario per alcuni tipi di dati, es. 'Dichiara -A' per gli array associativi. 'declare -g' è spesso una caratteristica utile quando si vuole rendere esplicito a un lettore che * si sta * intenzionalmente * riferendosi a un global all'interno di una funzione, piuttosto che dimenticare semplicemente di dichiararlo e renderlo globale implicitamente. –