Codice: Seleziona tutto
fun() {
local readonly abc=1 # ISTRUZIONE1
readonly local xyz=1 # ISTRUZIONE2
}
Codice: Seleziona tutto
fun() {
local readonly abc=1 # ISTRUZIONE1
readonly local xyz=1 # ISTRUZIONE2
}
Codice: Seleziona tutto
$ readonly local var1="val1"
$ echo ${local-UNDEFINED}
UNDEFINED
readonly setta un flag di proprietà (ro) per la variabile indicata: da quel momento non è più possibile variare il contenuto della variabile.
Codice: Seleziona tutto
fun() {
local readonly abc=1 # ISTRUZIONE1
readonly local xyz=1 # ISTRUZIONE2
}
Codice: Seleziona tutto
~$ bash --version | grep version
GNU bash, versione 5.1.16(1)-release (x86_64-pc-linux-gnu)
Licenza GPLv3+: GNU GPL versione 3 o successiva <http://gnu.org/licenses/gpl.html>
Verificare se la variabile local è definita.Non è chiaro cosa voglia ottenere con il comando: echo ${local-UNDEFINED}
Che intuitivamente, e per essere precisi, dovrebbe essere anche readonly: sembra che invece readonly non abbia alcun effetto (vedi sotto).LucaZeta ha scritto: ↑domenica 28 maggio 2023, 5:59La prima istruzione assegna ad una variabile locale di nome abc il valore 1Codice: Seleziona tutto
fun() { local readonly abc=1 # ISTRUZIONE1 readonly local xyz=1 # ISTRUZIONE2 }
Su xyz sono d'accordo, ma non su local.La seconda istruzione assegna alle variabili read-only local: nessun valore e xyz: valore 1
Codice: Seleziona tutto
set -u
fun() {
local readonly abc=123 # ISTRUZIONE1
readonly local xyz=123 # ISTRUZIONE2
abc=456 # dovrebbe essere readonly (ma non lo è)
echo $xyz # OK
#xyz=456 # riga 9: xyz: variabile in sola lettura (come previsto)
echo $local
}
fun
123
riga 10: local: variabile non assegnata
BAHHHhttps://stackoverflow.com/questions/454 ... y-variable
This time it will define var1 as readonly, but it will also define a variable called local, so using this way it will not handle local as keyword, it will be a variable name.
In realtà la prima istruzione definisce 2 variabili locali di nome readonly e abc e valorizza abc con il volore 1.london3 ha scritto: ↑domenica 28 maggio 2023, 7:08Codice: Seleziona tutto
fun() { local readonly abc=1 # ISTRUZIONE1 readonly local xyz=1 # ISTRUZIONE2 }
mmmmmmmmmmhhhhhhhhhh......
In realtà la prima istruzione definisce 2 variabili locali di nome readonly e abc e valorizza abc con il volore 1.
Codice: Seleziona tutto
$ declare -f fun
fun ()
{
set -u;
local readonly abc=123;
echo $readonly;
set +u
}
$ fun
var: readonly: variabile non assegnata
Codice: Seleziona tutto
fun () { set -u; local readonly=124 abc=123; echo $readonly; set +u; }
Visualizzano questa sezione: 0 utenti iscritti e 7 ospiti