Fravadona
Fravadona

Reputation: 17216

Saving $! (process ID of last background command) as an array element

I can't understand the way zsh 5.9 behaves when assigning $! to an array:

unset a b c

sleep 3 &

a=$!
b[1]=$!
c[1]=${!}

typeset -p a b c

output:

typeset a=21391
typeset -a b=( '$!' )
typeset -a c=( 21391 )

Getting b=( '$!' ) doesn't feel right... Is it a feature? A regression?

Upvotes: 3

Views: 98

Answers (1)

Fravadona
Fravadona

Reputation: 17216

The problem's been fixed in commit 5977d3c


But IMHO it's best not to rely on arr[1]=$! anymore and use the following workaround to be portable across zsh versions:

arr[1]=${!}

Upvotes: 1

Related Questions