当我在终端中运行命令时,它会分配数组。
$ 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[@]}