проверьте, существует ли файл для нескольких файлов в разных каталогах - PullRequest
1 голос
/ 28 января 2020

Я создаю сценарий bash, и все отлично работает, кроме этого:

read -p "Write directory names:" -a dir
for f in /home/user/downloads/${dir[@]}/*.zip; do
    if [ -f $f ]; then
        #do something
    else 
        #do something else
    fi
done

Я хочу проверить, существует ли файл .zip внутри каталога; для нескольких каталогов один за другим.

1 Ответ

2 голосов
/ 28 января 2020

Вы не можете подставить массив в имя файла, вам нужно l oop над массивом.

read -p "Write directory names:" -a dirs
for dir in "${dirs[@]}"; do
    for f in "/home/user/downloads/$dir/"*.zip; do
        if [ -f "$f" ]
        then
            # do something
        else
            # do something else
        fi
    done
done

Если вы просто хотите проверить, соответствует ли подстановочный знак чему-либо в каждом каталоге, замените внутренний l oop с одним из решений здесь: Проверьте, есть ли у шара какие-либо совпадения в bash

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