Сравнение строк в операторе 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
, изсписок каталогов в первую очередь.