scripts/qemustart: more portable array operation

The following commands output 1,2,1,1

    cmd0='a=("${a[@]}" 'a'); echo "${#a}"'
    cmd1='a+=('a'); echo "${#a}"'
    bash -c "$cmd0"; zsh -c "$cmd0"
    bash -c "$cmd1"; zsh -c "$cmd1"

The following outputs 0,1,0,0

    cmd2='f() { echo "$#"; }; f "${a[@]}"'
    cmd3="a=(); $cmd2"
    bash -c "$cmd2"; zsh -c "$cmd2"
    bash -c "$cmd3"; zsh -c "$cmd3"

Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
This commit is contained in:
Yousong Zhou 2017-05-11 14:29:52 +08:00
parent c9c2e4d78d
commit aa66aa0c9a

View file

@ -117,6 +117,7 @@ rand_mac() {
} }
parse_args() { parse_args() {
o_qemu_extra=()
while [ "$#" -gt 0 ]; do while [ "$#" -gt 0 ]; do
case "$1" in case "$1" in
--kernel) o_kernel="$2"; shift 2 ;; --kernel) o_kernel="$2"; shift 2 ;;
@ -131,7 +132,7 @@ parse_args() {
elif [ -z "$o_subtarget" ]; then elif [ -z "$o_subtarget" ]; then
o_subtarget="$1" o_subtarget="$1"
else else
o_qemu_extra=("${o_qemu_extra[@]}" "$1") o_qemu_extra+=("$1")
fi fi
shift shift
;; ;;
@ -174,10 +175,9 @@ start_qemu_armvirt() {
if [ ! -f "$rootfs" -a -s "$rootfs.gz" ]; then if [ ! -f "$rootfs" -a -s "$rootfs.gz" ]; then
gunzip "$rootfs.gz" gunzip "$rootfs.gz"
fi fi
o_qemu_extra=( \ o_qemu_extra+=( \
"-drive" "file=$rootfs,format=raw,if=virtio" \ "-drive" "file=$rootfs,format=raw,if=virtio" \
"-append" "root=/dev/vda rootwait" \ "-append" "root=/dev/vda rootwait" \
"${o_qemu_extra[@]}" \
) )
} }