在具体的 Bash 版本4.0.0
中,有没有办法解决在启用$@
时使用空引发未绑定变量错误的问题set -u
?
考虑以下:
#!/usr/bin/env bash-4.0.0-1
set -xvu
echo "$BASH_VERSION"
echo "${BASH_VERSINFO[@]}"
main () {
printf '%q\n' "${@:-}"
}
main "${@:-}"
当我提供一组空参数时,给我以下输出:
neech@nicolaw.uk:~ $ ./test.sh
echo "$BASH_VERSION"
+ echo '4.0.0(1)-release'
4.0.0(1)-release
echo "${BASH_VERSINFO[@]}"
+ echo 4 0 0 1 release x86_64-unknown-linux-gnu
4 0 0 1 release x86_64-unknown-linux-gnu
main () {
printf '%q\n' "${@:-}"
}
main "${@:-}"
./test.sh: line 12: $@: unbound variable
我只在 Bash 版本中看到这种行为4.0.0
。
我希望使用变量替换${@:-}
可以让我解决这个问题,但似乎不是。
有没有办法解决这个问题?