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

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

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

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

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

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

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

  • Как я могу группировать числа в файле
  • Получить количество пробелов в строке?
  • Найти файлы, созданные за определенное время после или до создания определенного файла
  • grep -Ef для захвата соответствующих ip-адресов в двух файлах, а также результат печати или эха каждой итерации, xx.xx.xx.xx found или xx.xx.xx.xx не найден
  • bash читает новую строку, printf сообщает символ 0
  • Можно ли создать zip-файл без использования zip-бинарного файла?
  • Если я выполнил файл сценария Bash, будут ли выполняться все команды внутри скрипта Bash как sudo?
  • Итерировать файлы в папке
  • One Solution collect form web for “Назначение команды массиву в сценарии оболочки не работает?”

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

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