i=0; ls > $((++i)); echo i=$i
creare un file: 1
e uscita:
i = 0
commento : perché io = 0?
caso 1
i=0; ls $((++i)); echo i=$i
uscita:
i = 1
commento: il risultato è corretto
caso 2
i=0; echo > $((++i)); echo i=$i
creare un file: 1
e uscita:
i = 1
commento: il risultato è corretto
caso 3
i=0; echo 1 | grep $((++i)); echo i=$i
uscita:
i = 0
commento: forse il caso 3 < => 0 caso?
caso 4
i=0; command ls > $((++i)); echo i=$i
creare un file: 1
e uscita:
i = 1
commento: perché diff con il caso 0?
caso 5
i=0; { ls; } > $((++i)); echo i=$i
creare un file: 1
e uscita:
i = 1
commento: questo caso da gniourf_gniourf
più casi:
i=0; (echo) > $((++i)); echo i=$i #i=0
i=0; { ls > $((++i)); }; echo i=$i #i=0
Sono molto confuso, perché i = 0 in caso di 0?
Se si tratta di un bug?
La mia versione bash: GNU bash, la versione 3.2.25 (1) -release (i686-redhat-linux-gnu)
si può provare nel vostro bash.
Questo non è un errore, perché le proprie prestazioni in spazi dei nomi diversi. – muradin
@muradin: non ci sono spazi dei nomi in bash. – choroba
@choroba: Diverse sessioni come hai giustamente menzionato 'subshells' hanno le loro variabili. Questi non sono visibili l'uno all'altro e questo era ciò che intendevo. Non spazi dei nomi come gli altri linguaggi come il C++. – muradin