如何向bash脚本添加默认数组参数
我试图将字符串数组传递给我想要迭代的bash脚本。我想设置一个默认数组,以防用户不向脚本提供此参数 这就是我尝试过的: test.sh: 但是正在运行。/test.sh或 ./test.sh“w”“z”产量: /test.sh:第2行:${1[@]:-${default_dirs[@]}:错误替换如何向bash脚本添加默认数组参数,bash,Bash,我试图将字符串数组传递给我想要迭代的bash脚本。我想设置一个默认数组,以防用户不向脚本提供此参数 这就是我尝试过的: test.sh: 但是正在运行。/test.sh或 ./test.sh“w”“z”产量: /test.sh:第2行:${1[@]:-${default_dirs[@]}:错误替换 我应该怎么做呢?脚本的参数不都是$1(而且$1不是数组,这就是替换失败的原因),因此请改用$@: dirs=("${@:-${default_dirs[@]}}") for dir
我应该怎么做呢?脚本的参数不都是
$1
(而且$1
不是数组,这就是替换失败的原因),因此请改用$@
:
dirs=("${@:-${default_dirs[@]}}")
for directory in "${dirs[@]}"
do
echo "$directory"
done
脚本的参数并非全部来自
$1
(并且$1
不是数组,这就是替换失败的原因),因此请改用$@
:
dirs=("${@:-${default_dirs[@]}}")
for directory in "${dirs[@]}"
do
echo "$directory"
done
(${dirs[@]}))|dirs=(“${default_dirs[@]}”)
是一种方式。dirs=(“${dirs[@]:-“${default_dirs[@]}”)
可能是您想要的。@cbakos:您不能将数组传递给子进程。即使/test.sh w z
也不会使用一个数组参数调用脚本,而是使用两个参数(w和z)。只是在脚本中,您可以选择访问通过名为@
的特殊数组传递的所有参数。但是请注意,@
并不像bash数组那样在各个方面都有表现。(${dirs[@]}))|dirs=(“${default_dirs[@]}”)
是一种方式。dirs=(${dirs[@]:-“${default dirs[@]}”)可能是您想要的。@cbakos:您不能将数组传递给子进程。即使/test.sh w z
也不会使用一个数组参数调用脚本,而是使用两个参数(w和z)。只是在脚本中,您可以选择访问通过名为@
的特殊数组传递的所有参数。但是请注意,@
并不像bash数组那样在各个方面都有表现。