1 #!/bin/bash
2 #
3 # Arrays decay upon assignment (without splicing) and equality. This will not
4 # be true in Oil -- arrays will be first class.
5
6 ### Assignment Causes Array Decay
7 set -- x y z
8 #argv "[$@]" # NOT DECAYED here.
9 var="[$@]"
10 argv "$var"
11 # stdout: ['[x y z]']
12
13 ### User arrays decay
14 declare -a a b
15 a=(x y z)
16 b="${a[@]}" # this collapses to a string
17 c=("${a[@]}") # this preserves the array
18 c[1]=YYY # mutate a copy -- doesn't affect the original
19 argv.py "${a[@]}" "${b[@]}" "${c[@]}"
20 # stdout: ['x', 'y', 'z', 'x y z', 'x', 'YYY', 'z']
21
22 ### $a gives first element of array
23 a=(1 '2 3')
24 echo $a
25 # stdout: 1
26