Сценарий Bash - PullRequest
       3

Сценарий Bash

0 голосов
/ 30 мая 2018

Мне было поручено найти все файлы .js в текущем каталоге, используя скрипт bash.Я придумал
find . -name "*.js", но мой наставник дал мне подсказку, предоставив этот код
test="**.js" echo $test
Может кто-нибудь сказать мне, как работает этот код и какой из них является точным решением проблемы?

1 Ответ

0 голосов
/ 30 мая 2018

Техническое объяснение:

  • 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

Это обрабатывает буквально любое имя файла, включая те, которые имеют странные символы, такие как символы новой строки или начинаются с тире.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...