如何将命令行参数转换为 bash 脚本数组?
我想接受这个:
./something.sh arg1 arg2 arg3
并将其转换为
myArray=( arg1 arg2 arg3 )
这样我就可以使用 myArray 在脚本中进一步使用。
我需要将参数转换为常规的 bash 脚本数组;我意识到我可以使用其他语言(例如 Python),但需要在 bash 中执行此操作。我想我正在寻找“附加”功能或类似的东西?
更新:我还想问如何检查零参数并分配默认数组值,并且由于下面的答案,能够使它工作:
if [ "$#" -eq 0 ]; then myArray=( defaultarg1 defaultarg2 ) else myArray=( "$@" ) fi
实际上,您的命令行参数 实际上 已经像一个数组了。至少,您可以将$@变量视为数组。也就是说,您可以将其转换为实际的数组,如下所示:
$@
myArray=( "$@" )
如果您只想输入一些参数并将它们输入到$@值中,请使用set:
set
$ set -- apple banana "kiwi fruit" $ echo "$#" 3 $ echo "$@" apple banana kiwi fruit
了解如何使用参数结构在 POSIX sh 中特别有用,它没有其他任何东西像数组。