scripts/qemustart: more portable array operation
authorYousong Zhou <yszhou4tech@gmail.com>
Thu, 11 May 2017 06:29:52 +0000 (14:29 +0800)
committerYousong Zhou <yszhou4tech@gmail.com>
Wed, 31 Jan 2018 08:54:57 +0000 (16:54 +0800)
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>
scripts/qemustart

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