BASH:如何在调用 bash 脚本之前将数组定义为环境变量

Kon*_*tin 6 arrays bash shell

在 bash 中,你可以这样做

MYVAR="somevalue" ./myscript.sh
Run Code Online (Sandbox Code Playgroud)

变量 MYVAR 将在运行 myscript.sh 时定义。

我的问题是:我可以对数组做同样的事情吗?不幸的是,以下方法都不起作用。

MYARR=( 1 2 ) ./myscript.sh
MYARR[0]=1 MYARR[1]=2 ./myscript.sh
declare -a MYARR=( 1 2 ) ./myscript.sh
Run Code Online (Sandbox Code Playgroud)

dto*_*rgo 6

难以置信,奇怪……我以前从未见过。

看起来数组没有传递到子 shell。解决这个问题的一种方法是获取脚本而不是执行它:

declare -a MYARR=( 1 2 ); . ./myscript.sh
Run Code Online (Sandbox Code Playgroud)