Прежде всего, привет всем, это мой первый пост здесь. Клянусь, я проверил сайт на подобные вопросы, чтобы избежать проблемы с «двойным сообщением о том же аргументе», но никто из них не ответил точно на мой вопрос. Проблема в том, что в приведенном ниже коде я всегда получаю сообщение "There are no files with this extension"
, когда я вызываю скрипт, передающий ему расширение как первый аргумент.Как передать список файлов с определенным расширением в цикле for в bash
#!/bin/bash
if [ "$1" ];
then
file=*."$1";
if [ -f "$file" ];
then
for i in "$file";
[...do something with the each file using "$i" like echo "$i"]
else
echo "There are no files with this extension";
fi;
else
echo "You have to pass an extension"
fi;
Я попытался использовать двойную скобку, используя и не используя кавычки в вложенном, если, используя *."$1"
непосредственно в случае, но ни одно из этого решения не работал.
Вы были действительно исчерпывающими, спасибо большое! –
Еще один вопрос, в этом случае, где я могу поместить «echo». Не было файла с этим расширением?? Я попытался разместить его после 'done', но похоже на' [-f "$ file"] || continue' заставляет скрипты останавливаться вообще, если он не находит никакого файла, который соответствует. –
Как сценарий написан в моем примере, вы не можете легко предоставить эту ошибку. Вы могли бы поддерживать количество совпадающих файлов в 'for 'loop и проверить, будет ли это число' 0'. – larsks