argv[1] = <> argv[1] = argv[1] = argv[1] = argv[1] = argv[2] = argv[1] = argv[2] = argv[1] = <3> argv[1] = argv[1] = argv[1] = argv[1] = <3> argv[1] = argv[1] = argv[1] = argv[1] = <3> argv[1] = argv[1] = argv[1] = argv[1] = <3> argv[1] = argv[1] = argv[1] = argv[1] = <3> argv[1] = argv[1] = argv[1] = argv[1] = <3> argv[1] = argv[1] = argv[1] = argv[1] = <5> argv[1] = argv[1] = argv[1] = argv[1] = <5> argv[1] = argv[1] = argv[1] = argv[1] = <1> argv[1] = argv[2] = argv[3] = argv[4] = argv[5] = argv[1] = <3> argv[1] = argv[1] = argv[2] = argv[3] = argv[1] = argv[1] = argv[2] = argv[3] = argv[4] = argv[5] = argv[1] = argv[2] = argv[3] = argv[4] = argv[5] = argv[1] = argv[2] = argv[3] = argv[1] = argv[1] = argv[2] = argv[3] = argv[1] = argv[2] = argv[3] = argv[1] = foo = 1:2:3:4:5:6:7:8:9:10 bar = 1:2:3:4:5:6:7:8:9:10 foo1 = 1 2 3 4 5 6 7 8 9 10 bar1 = 1 2 3 4 5 6 7 8 9 10 foo2 = 1:2:3:4:5:6:7:8:9:10 bar2 = 1:2:3:4:5:6:7:8:9:10 foo3 = 1:2:3:4:5:6:7:8:9:10 bar3 = 1:2:3:4:5:6:7:8:9:10 ok 1 ok 2 ok 3 ok 4 foo = 1 2 3 4 5 6 7 8 9 10 bar = 1 2 3 4 5 6 7 8 9 10 foo1 = 1 2 3 4 5 6 7 8 9 10 bar1 = 1 2 3 4 5 6 7 8 9 10 foo2 = 1 2 3 4 5 6 7 8 9 10 bar2 = 1 2 3 4 5 6 7 8 9 10 foo3 = 1 2 3 4 5 6 7 8 9 10 bar3 = 1 2 3 4 5 6 7 8 9 10 ok 1 ok 2 ok 3 ok 4 var=${a[*]} ... one:::two:three:::four var="${a[*]}" ... one:::two:three:::four var=$* ... one:::two:three:::four var="$*" ... one:::two:three:::four var=${a[@]} ... one:::two three:::four var="${a[@]}" ... one:::two three:::four var=$@ ... one:::two three:::four var="$@" ... one:::two three:::four xa|xb|xc xa|xb|xc a|b|c a|b|c a b c a b c xa xb xc xa xb xc a|b b|c a b b c a|b|c a|b|c xa|xb|xc xa|xb|xc 3 3 3 3 3 3 3 3 argv[1] = argv[1] = argv[2] = <2> argv[1] = argv[1] = argv[2] = <2> argv[1] = argv[1] = argv[1] = argv[1] = argv[1] = argv[1] = argv[2] = argv[1] = argv[1] = argv[1] = argv[1] = argv[2] = <> argv[3] = argv[4] = <> argv[1] = argv[1] = argv[2] = <> argv[3] = argv[4] = <> argv[1] = argv[1] = argv[2] = <> argv[3] = argv[4] = <> 0 bar after 1 after 2 0 bar after 1 after 2 a b ab cd ok 1 ok 2 argv[1] = argv[2] = argv[1] = argv[2] = argv[3] = argv[4] = argv[1] = argv[1] = <1> <2> <3> <4> <5 1> <1 1> <2> <3> <4> <5> <11> <2> <3> <4> <51> <1 1> <2> <3> <4> <5 1> <11> <2> <3> <4> <51> <1> <2> <3> <4> <51> <11> <2> <3> <4> <5> <1> <2> <3> <4> <51> <11> <2> <3> <4> <5> <1> <2> <3> <4> <5foo> <1> <2> <3> <4> <51> <1> <2> <3> <4> <5foo> <1> <2> <3> <4> <51> <11> <2> <3> <4> <5> <1> <2> <3> <4> <51> <11> <2> <3> <4> <5> <1> <2> <3> <4> <5foo> second set: <1 2> <3> <4> <5 1 2> <1 2 1 2> <3> <4> <5> <1 21 2> <3> <4> <51 2> <1 2 1 2> <3> <4> <5 1 2> <1> <21 2> <3> <4> <51> <2> <1 2> <3> <4> <51> <2> <1> <21 2> <3> <4> <5> <1 2> <3> <4> <51 2> <1 21 2> <3> <4> <5> <1 2> <3> <4> <5foo> <1> <2> <3> <4> <51> <2> <1> <2> <3> <4> <5foo> <1 2> <3> <4> <51 2> <1 21 2> <3> <4> <5> <1 2> <3> <4> <51 2> <1 21 2> <3> <4> <5> <1 2> <3> <4> <5foo> third set: "${@:2}a3 a2" a$1 #works as long as $1 and 3 are swapped set y za3 a2 ax 0 declare -a a='([0]="y" [1]="za3 a2" [2]="ax")' "${@:2}b$1 b2" b3 #fails! why? set y zbx b2 b3 0 declare -a b='([0]="y" [1]="zbx b2" [2]="b3")' ${@:2}c$1 c2 c3 #works as long as quoting omitted set y zcx c2 c3 0 declare -a c='([0]="y" [1]="zcx" [2]="c2" [3]="c3")' argv[1] = <> argv[2] = argv[1] = <> argv[2] = 1 argv[1] = <> argv[2] = <> argv[3] = argv[1] = <> argv[2] = argv[1] = <> argv[2] = <> argv[3] = argv[1] = <> argv[2] = argv[1] = <> argv[2] = argv[1] = <> argv[1] = <> argv[1] = <> argv[1] = <> argv[1] = argv[1] = argv[1] = argv[1] = argv[1] = argv[1] = argv[1] = argv[1] = argv[1] = argv[1] = argv[1] = argv[1] = after 1: IFS - argv[1] = after 2: IFS - argv[1] = argv[1] = argv[2] = argv[3] = argv[4] = argv[1] = argv[1] = argv[2] = argv[3] = argv[4] = argv[1] =