令我惊讶的是,我在1小时之后找不到答案.
我想像这样传递一个数组到我的脚本:
我想像这样传递一个数组到我的脚本:
- 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