Được
cmd='fun(){ echo "$@"; }; fun $(fun $(fun hi))'
vỏ có xu hướng cần làm 2 dĩa để thực hiện
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
ngoại trừ ksh
anh hùng làm cho nó mà không cần một lần:
dash 2
bash 2
zsh 2
ksh 0
sao làm được vậy?
Biên tập:
Đây là cách nó đi xuống với một đường ống ném vào:
cmd='fun(){ echo "$@"| echo "$@"; }; fun $(fun $(fun hi))'
Đầu ra:
dash 11
bash 10
zsh 5
ksh 3
ksh
cài đặt chưa? Khi tôi chạy mã của bạn, tôi nhận được 0
bất kỳ shell nào tôi chưa cài đặt