在 shell 脚本中将命令分配给数组不起作用?

在 shell 脚本中将命令分配给数组不起作用?

当我在终端中运行命令时,它会分配数组。

$ FILES=($(ls ~/Desktop/TEST/))
$ echo ${FILES[@]}
file1.txt file2.txt file3.txt

但是一旦我关闭终端并在 shell 脚本中运行它,我就会得到一个空行?

$ ./TEST.txt 
$ echo ${FILES[@]}

$ 

我已经测试过它echo $?并返回 true/ 0

不确定发生了什么?

答案1

这是因为该echo命令不是脚本的一部分。该脚本在子 shell 中执行,当脚本结束时,FILES变量不再可用。要使该FILES变量可用于当前 shell,请使用:

$ source ./TEST.txt
$ echo ${FILES[@]}

相关内容