Dany
cmd='fun(){ echo "$@"; }; fun $(fun $(fun hi))'
pociski zwykle wymagają wykonania 2 widelców, aby tak się stało
strace-f(){ strace -f "$@" 2>&1; };
for sh in dash bash zsh ksh; do
printf "$sh\t" ; strace-f $sh -c "$cmd" |grep -e clone -e fork -c;
done
z wyjątkiem ksh
heroicznie czyni to bez rozwidlania się raz:
dash 2
bash 2
zsh 2
ksh 0
Jak to robi?
Edytować:
Oto, jak to idzie z wrzuconą rurą:
cmd='fun(){ echo "$@"| echo "$@"; }; fun $(fun $(fun hi))'
Wynik:
dash 11
bash 10
zsh 5
ksh 3
ksh
zainstalowany program do sprawdzania czystości psychicznej ? Kiedy uruchamiam twój kod, dostaję 0
za każdą powłokę, której jeszcze nie zainstalowałem