[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: bash e variabili globali



2010/9/18 Paolo Sala <piviul@riminilug.it>:
> Ciao a tutti esiste un modo in bash per settare le variabili globali da
> una funzione anche se viene chiamata con $(nome_func) o in modo
> equivalente da `nome_func`? Per capirci ecco un esempio che spero sia
> chiarificatore:
>

Non credo di poter chiarire i tuoi dubbi e dubito di aver capito cosa
vuoi fare, ma provo a rispondere:
se richiami la funzione con 'test' (o anche '$test' o '$(test)',
allora la *var* restituirà il valore assegnatole nella funzione;
se, invece, ri-assegni un valore a *var*, la funzione ti restituisce
il nuovo valore se e solo se la richiami con '$test' oppure con
'$(test)" [cfr. es. in calce].

Spero ti possa essere di aiuto. Ciao,
      ennio

--------------------------quote-------------------------
#!/bin/bash
test () {
    # mi piacerebbe andare a modificare la variabile globale var
    var="valore settato in test()"
}

var="valore assegnato a var fuori funzione"
echo -e "ok, restituisce il valore ass. a var qui sopra:\n\t" $var
test   # qui lancio la funzione che fa il suo dovere!
echo -e "Lanciato test che ha assegnato a var il valore indicato nella
funzione:\n\t" $var
echo -e "ora var ha il valore assegnatole da 'test'"

echo "ora lancio test, doll test e doll(test), in ordine:"
test
echo "chiamata 1a (dopo test):" $var
$test
echo "chiamata 1b (dopo doll test):" $var
$(test)
echo "chiamata 1c (dopo doll(test)):" $var

# ora assegno un nuovo valore a var
var="nuovo valore di var"
echo "ho assegnato un nuovo valore a var: \n\t" $var
echo "lancio test"
test
echo "chiamata 2a (dopo  test):" $var

echo "come vedi, test ha ripreso il suo valore indicato in funzione"
echo "se però ri-assegno un nuovo valore a var:"
echo "e lancio doll test (anzichè solo test)"
echo "avviene la sostituzione:"

var="questo valore invece NON viene sovrascritto da test"
$test
echo "chiamata 2b (dopo doll test):" $var
$(test)
echo "chiamata 2c (dopo doll(test)):" $var

--------------------------------unquote--------------------------------
-- 
[Perche' usare Win$ozz (dico io) se ..."anche uno sciocco sa farlo.   \\?//
 Fa' qualche cosa di cui non sei capace!"  (diceva Henry Miller) ]    (°|°)
[Why use Win$ozz (I say) if ... "even a fool can do that.              )=(
 Do something you aren't good at!" (as Henry Miller used to say) ]


Reply to: