Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何向bash脚本添加默认数组参数_Bash - Fatal编程技术网

如何向bash脚本添加默认数组参数

如何向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

我试图将字符串数组传递给我想要迭代的bash脚本。我想设置一个默认数组,以防用户不向脚本提供此参数

这就是我尝试过的:

test.sh:

但是正在运行。/test.sh或

./test.sh“w”“z”产量:

/test.sh:第2行:${1[@]:-${default_dirs[@]}:错误替换


我应该怎么做呢?

脚本的参数不都是
$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数组那样在各个方面都有表现。