Bash empty array expansion with `set -u`

后端 未结 11 2203
不知归路
不知归路 2020-12-12 15:37

I\'m writing a bash script which has set -u, and I have a problem with empty array expansion: bash appears to treat an empty array as an unset variable during e

11条回答
  •  野趣味
    野趣味 (楼主)
    2020-12-12 15:52

    this may be another option for those who prefer not to duplicate arr[@] and are okay to have an empty string

    echo "foo: '${arr[@]:-}'"
    

    to test:

    set -u
    arr=()
    echo a "${arr[@]:-}" b # note two spaces between a and b
    for f in a "${arr[@]:-}" b; do echo $f; done # note blank line between a and b
    arr=(1 2)
    echo a "${arr[@]:-}" b
    for f in a "${arr[@]:-}" b; do echo $f; done
    

提交回复
热议问题