令人惊讶的是,我找了一个小时却没有找到答案。
我想将数组传递给我的脚本,如下所示:

test.sh argument1 array argument2

我不想把这个放到另一个bash脚本中,比如:
array=(a b c)
for i in "${array[@]}"
do
  test.sh argument1 $i argument2
done

最佳答案

Bash数组不是“第一类值”——不能像传递一个“东西”一样传递它们。
假设test.sh是bash脚本,我会

#!/bin/bash
arg1=$1; shift
array=( "$@" )
last_idx=$(( ${#array[@]} - 1 ))
arg2=${array[$last_idx]}
unset array[$last_idx]

echo "arg1=$arg1"
echo "arg2=$arg2"
echo "array contains:"
printf "%s\n" "${array[@]}"

像这样调用它
test.sh argument1 "${array[@]}" argument2

10-07 19:03
查看更多