端末でコマンドを実行すると、配列が割り当てられます。
$ FILES=($(ls ~/Desktop/TEST/))
$ echo ${FILES[@]}
file1.txt file2.txt file3.txt
ただし、ターミナルを閉じてシェルスクリプトで実行すると、空白行が表示されます。
$ ./TEST.txt
$ echo ${FILES[@]}
$
テストしてみるとecho $?
true /が返されます0
。
何が起こっているのか分からないのですか?
答え1
これはecho
、コマンドがスクリプトの一部ではないためです。スクリプトはサブシェルで実行され、スクリプトが終了するとFILES
変数は使用できなくなります。このFILES
変数を現在のシェルで使用できるようにするには、次のようにします。
$ source ./TEST.txt
$ echo ${FILES[@]}