![在 shell 脚本中将命令分配给数组不起作用?](https://linux22.com/image/78560/%E5%9C%A8%20shell%20%E8%84%9A%E6%9C%AC%E4%B8%AD%E5%B0%86%E5%91%BD%E4%BB%A4%E5%88%86%E9%85%8D%E7%BB%99%E6%95%B0%E7%BB%84%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8%EF%BC%9F.png)
当我在终端中运行命令时,它会分配数组。
$ 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[@]}