Игнорирование определенного файла в сценарии оболочки для цикла - PullRequest
0 голосов
/ 02 декабря 2018

Мой сценарий оболочки проходит по заданному каталогу для выполнения сценария Python.Я хочу иметь возможность игнорировать определенный файл, который является export_config.yaml.В настоящее время это используется в цикле for и выводит ошибку на терминал. Я хочу, чтобы он полностью игнорировал этот файл.

yamldir=$1


for yaml in ${yamldir}/*.yaml; do

if [ "$yaml" != "export_config.yaml" ]; then

    echo "Running export for $yaml file...";
    python jsonvalid.py -p ${yamldir}/export_config.yaml -e $yaml -d ${endDate}
    wait

fi

сделано

1 Ответ

0 голосов
/ 02 декабря 2018

Сравнение строк в операторе if не соответствует export_config.yaml, поскольку для каждой итерации цикла for вы назначаете полный относительный путь к файлу (т. Е. "$yamldir/export_config.yaml", а не просто "export_config.yaml"") на $yaml.

Первый вариант: Изменение выражения if для отражения того, что должно исправить вашу проблему:

if [ "$yaml" != "${yamldir}/export_config.yaml" ]; then
#etc...

Другой вариант: Используйте basename, чтобы получить только строку пути к терминалу (то есть имя файла).

for yaml in ${yamldir}/*.yaml; do
yaml=$(basename $yaml)
if [ "$yaml" != "export_config.yaml" ]; then
#etc...

Третий вариант: Вы можете полностью отказаться от оператора ifвыполнив цикл for следующим образом:

for yaml in $(ls ${yamldir}/*.yaml | grep -v "export_config.yaml"); do

Передав выходные данные от ls до grep -v, вы можете исключить любую строку, включая export_config.yaml, изсписок каталогов в первую очередь.

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