линия вызывает проблемы является:
path_file_conf=/full/path/directory/*.conf
Оболочка не делает расширение джокера по имени, когда есть несколько файлов, чтобы соответствовать, или если файлы не совпадают, так что (за исключением необычных обстоятельствах иметь файл под названием *.conf
со звездочкой) тест -e
не прошел. Вероятно, есть опция в bash
, чтобы генерировать ошибку, когда wild card не соответствует; Я бы никогда не использовал его.
Вы можете использовать:
path_file_conf=(/full/path/directory/*.conf)
Это дает массив с именами файлов в качестве элементов массива. Однако, если нет файлов, которые соответствуют друг другу, это дает вам имя, записанное как единственный элемент массива.
Оттуда вы можете проверить каждый файл, в свою очередь:
for conf_file in "${path_file_conf[@]}"
do
if [ -e "$conf_file" ]
then echo "Found file $conf_file"
else echo "No such file as $conf_file"
fi
done
Вы можете определить количество имен с ${#path_file_conf[@]}
, но помните, что 1 может указывать на реальный файл или несуществующий файл.
эта логика работает. Спасибо за вашу помощь. – Paengski