Как не перейти к следующему elif, если первое верно?

У меня есть список текстовых файлов в каталоге, который я хочу найти с терминала . Чтобы не заставлять себя слишком много думать, я хочу иметь возможность искать несколько слов, например искать один, два, три , если есть файл, в имени которого есть одно или несколько таких слов, вернуть его. Это операторы if, которые у меня есть:

snip-list() {
    for filename in ~/notes/*; do
        file=`basename "$filename"`
        fs=${file%.*}
        if [[ $fs =~ $1 ]] && [[ $fs =~ $2 ]] && [[ $fs =~ $3 ]] && [[ $fs =~ $4 ]] && [[ $fs =~ $5 ]]; then
            echo $fs
            # exit
        elif [[ $fs =~ $1 ]] && [[ $fs =~ $2 ]] && [[ $fs =~ $3 ]] && [[ $fs =~ $4 ]]; then
            echo $fs
            # exit
        elif [[ $fs =~ $1 ]] && [[ $fs =~ $2 ]] && [[ $fs =~ $3 ]]; then
            echo $fs
            # exit
        elif [[ $fs =~ $1 ]] && [[ $fs =~ $2 ]]; then
            echo $fs
            # exit
        elif [[ $fs =~ $1 ]]; then
            echo $fs
        fi
    done
}

Я буду добавлять файлы в этот каталог, поэтому, если я запущу этот оператор как есть, я получу столько результатов, что они будут бесполезны (по крайней мере, мне придется прокручивать наверх, чтобы увидеть первые результаты).

Если есть способ сделать так, чтобы «если пользователь искал 5 терминов и они что-то вернули, не выполняли остальные 4 условия

Я пробовал запускать exit после каждого Мне нужно, чтобы окно терминала оставалось открытым.

0
22.03.2016, 00:28
1 ответ

Используйте return вместо exit для возврата из функции оболочки.

Если вы используете bash или другую оболочку со встроенной справкой, введите help return для получения подробной информации. В противном случае см. Справочную страницу вашей оболочки.

0
28.01.2020, 04:51

Теги

Похожие вопросы