首页 > 解决方案 > 如何将普通 args 和数组都传递给 bash 脚本参数?

问题描述

我正在尝试拥有一个包含一些参数的 bash 脚本。其中一个需要是一个数组,因此 args 的数量在该数组中不固定。

所以我想按如下方式运行我的 bash 脚本:

test.sh arg1 arg2 arr1

在 test.sh 中,我正在做类似的事情

arg1=$1
arg2=$2

arr=$3 # arr1
for var in len(arr)
do
 # do something
done

标签: arraysbasharguments

解决方案


#!/bin/bash

arg1=$1
arg2=$2

shift 2

for argn do
    # do something with "$argn"
done

也就是说,首先接收两个固定参数,然后使用 将它们从位置参数列表中移出shift 2。位置参数列表中剩下的是其他参数的可变长度列表。

最后一个循环可以写成

for argn in "$@"; do
    # do something with "$argn"
done

...但请确保您使用"$@"而不是仅仅$@因为它会拆分空格上的各个参数并调用文件名通配符。


推荐阅读