przypadek 0
i=0; ls > $((++i)); echo i=$i
utworzyć plik: 1
i wyjście:
i = 0
komentarz : dlaczego i = 0?
przypadek 1
i=0; ls $((++i)); echo i=$i
wyjściowa:
i = 1
komentarz: wynik jest prawidłowy
przypadek 2
i=0; echo > $((++i)); echo i=$i
utworzyć plik: 1
i wyjście:
i = 1
komentarz: wynik jest prawidłowy
przypadek 3
i=0; echo 1 | grep $((++i)); echo i=$i
wyjściowa:
i = 0
komentarz: może przypadek 3 < => case 0?
przypadek 4
i=0; command ls > $((++i)); echo i=$i
utworzyć plik: 1
i wyjście:
i = 1
komentarz: dlaczego diff z przypadkiem 0?
przypadek 5
i=0; { ls; } > $((++i)); echo i=$i
utworzyć plik: 1
i wyjście:
i = 1
Komentarz: ta sprawa z gniourf_gniourf
więcej przypadków:
i=0; (echo) > $((++i)); echo i=$i #i=0
i=0; { ls > $((++i)); }; echo i=$i #i=0
Jestem bardzo mylić, dlaczego i = 0 w przypadku 0?
Czy to błąd?
Moja wersja bash GNU bash, wersja 3.2.25 (1) -release (i686-RedHat-linux-gnu)
Można spróbować w bash.
to nie jest błąd, ponieważ są one występować w różnych nazw. – muradin
@muradin: W bashu nie ma żadnych przestrzeni nazw. – choroba
@choroba: Różne sesje, jak poprawnie wspomniano 'subshells' mają swoje własne zmienne. Nie są one widoczne dla innych i to właśnie miałem na myśli. Nie przestrzenie nazw jak inne języki, takie jak C++. – muradin