bash wtf

$ var=1; if true; then var=0; fi; echo $var
0
$ var=1; if true; then var=0; fi | cat; echo $var
1

Gondolom, a pipe valami külön processzt csinál, de elég meglepő volt.

Hozzászólások

$ var=1; if true; then var=0; fi | cat; echo $var
1
$ echo ${0:-}
-ksh

Nem csak bash-ben, hanem valoszinuleg minden Unix shellben igy mukodik.

> $ var=1; if true; then var=0; fi | cat; echo $var

Próbáld így:

(var=1; if true; then var=0; fi) | (cat; echo $var)

> a pipe valami külön processzt csinál

Inkább "process group"-ot, ami a létrehozásakor megörökli a környezeti változókat.