2015-10-17 1 views
0

Я пытаюсь создать «если» заявление с аргументами, как это:расширения находки набрано как скрипт аргумент и право доступа

if [ find $3 -type f\(-name "*.$1"\) ] \

и я называю сценарий:

./script .txt .doc ./catalog

Так я хочу проверить, если в типизированном каталоге $ 3 существует какой-либо файл, заканчивающий мой первый введенный аргумент, я не знаю, как я могу его исправить?

Мой второй вопрос, как я могу добавить права доступа в этом скрипте? Etc. я называю этот скрипт без доступа я только тогда печатать некоторые строки и т.д. «У вас нет прав ...»

ответ

0

Try:

if ! [ -r "$3" ] 
then 
    echo "You have no access rights" 
    exit 1 
fi 
if find "$3" -type f -name "*$1" | grep -q . 
then 
    echo "Found one!" 
else 
    echo "No luck." 
fi 

Первого if заявления выше проверки прав доступа для чтения каталог, который вы выбрали. Если у вас нет доступа для чтения, он печатает сообщение и завершает работу.

В предыдущем заявлении if проверяется наличие хотя бы одного файла с расширением, которое вы хотите. Он использует инструкцию find, find "$3" -type f -name "*$1", чтобы искать соответствующие файлы. Выход из него передается по каналу на grep, который просто проверяет, есть ли какой-либо вывод из команды find. Если есть выход, то grep возвращает код выхода 0 и выполненный оператор then. Если нет выхода, grep устанавливает код выхода из 1 и выполняется оператор else.

+0

'grep -q .' может быть заменен' read' (или 'read _'), сохраняя один внешний процесс! –

+0

Отлично, большое спасибо –

Смежные вопросы