Техническое объяснение:
find . -name "*.js"
запускает команду , которая печатает путь, начинающийся с ./
файлов (включая «специальные» файлы, такие как каталоги), соответствующих glob *.js
в любом месте и ниже текущего рабочего каталога (pwd
или $PWD
) с выводом новой строки (или, что более технически, last )$IFS
) после каждого имени файла. test="**.js"
сохраняет строку **.js
в переменную с именем test
.echo $test
расширяет значение переменной test
в оболочке до пробела (или, технически, first * 1034)* символ $IFS
) строки, которая затем передается в качестве аргументов встроенной в оболочку echo
.Вторая звездочка в переменной избыточна.
Если цель состоит в том, чтобы циклически перебирать файлы .js в текущем каталоге, то лучшим решением будет цикл for
над глобусом:
for path in ./*.js
do
[…]
done
Это обрабатывает буквально любое имя файла, включая те, которые имеют странные символы, такие как символы новой строки или начинаются с тире.