Назначение команды массиву в сценарии оболочки не работает?

Когда я запускаю запустить команду в терминале, он назначает массив.

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

Но как только я закрываю терминал и запускаю его в сценарии оболочки, я получаю пустую строку?

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

Я тестировал его с помощью echo $? и он возвращает true / 0 .

Не знаете, что происходит?

  • Извлечь имя файла из другого имени файла.
  • Скрипт для организации рабочего стола в папки / каталоги с помощью расширения
  • Сценарий SSH и команда запуска
  • Я хочу сценарий, который будет брать несколько номеров столбцов от пользователя и отменить содержимое
  • копирование файлов в другое место
  • Как запустить smbclient из сценария в Linux?
  • Есть ли опция / команда для дифференциации файлов на основе состояния копии файла в каталоге?
  • Извлечь имена файлов со структурой каталога в CSV-файл (отдельный файл csv для каждого имени изображения)
  • One Solution collect form web for “Назначение команды массиву в сценарии оболочки не работает?”

    Это связано с тем, что команда echo не является частью скрипта. Сценарий выполняется в подоболочке en, ​​когда скрипт заканчивается, переменная FILES больше не доступна. Чтобы сделать переменную FILES доступной для текущей оболочки, используйте:

     $ source ./TEST.txt $ echo ${FILES[@]} 
    Linux и Unix - лучшая ОС в мире.