小编典典

将命令行参数转换为 Bash 中的数组

all

如何将命令行参数转换为 bash 脚本数组?

我想接受这个:

./something.sh arg1 arg2 arg3

并将其转换为

myArray=( arg1 arg2 arg3 )

这样我就可以使用 myArray 在脚本中进一步使用。

我需要将参数转换为常规的 bash 脚本数组;我意识到我可以使用其他语言(例如 Python),但需要在 bash
中执行此操作。我想我正在寻找“附加”功能或类似的东西?

更新:我还想问如何检查零参数并分配默认数组值,并且由于下面的答案,能够使它工作:

if [ "$#" -eq 0 ]; then
  myArray=( defaultarg1 defaultarg2 )
else
  myArray=( "$@" )
fi

阅读 63

收藏
2022-06-28

共1个答案

小编典典

实际上,您的命令行参数 实际上 已经像一个数组了。至少,您可以将$@变量视为数组。也就是说,您可以将其转换为实际的数组,如下所示:

myArray=( "$@" )

如果您只想输入一些参数并将它们输入到$@值中,请使用set

$ set -- apple banana "kiwi fruit"
$ echo "$#"
3
$ echo "$@"
apple banana kiwi fruit

了解如何使用参数结构在 POSIX sh 中特别有用,它没有其他任何东西像数组。

2022-06-28