|
|
|
|
|
by chubot
3544 days ago
|
|
Yes, in writing my bash parser/interpreter (see below) I explored the non-nested arrays and assoc arrays issue. I think it mainly has to do with the fact that bash has no references and garbage collection. When you create an array like [1, 2, [a, b]] in Python/Ruby/Perl, you are introducing the concept of references, as well introducing hte potential for reference cycles. In contrast, an array in bash is just a value, and it took me awhile to figure out how to even copy it. None of these work: a=('x y' z)
b=${a}
b=${a[*]}
b=${a[@]}
b="${a[*]}"
b="${a[@]}"
b=( ${a} )
b=( ${a[*]} )
b=( ${a[@]} )
b=( "${a}" )
b=( "${a[*]}" )
This works: b=( "${a[@]}" )
In other words, it takes 11 characters to properly copy an array! This syntax is horrible. |
|
In sh, each function has a local array, and you use that array with "$@". And typically you can get along with only that array. Not so bad.