Como não prosseguir para o próximo elif se o primeiro for verdadeiro?

0

Eu tenho uma lista de arquivos de texto em um diretório que eu quero procurar no terminal. Para não me fazer pensar muito, quero poder procurar poucas palavras, exemplo search one two three se houver um arquivo que tenha uma dessas palavras em seu nome, retorne-o. Estas são as declarações if que tenho:

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
}

Eu adicionarei arquivos a este diretório, então se eu executar essa declaração como está, receberei tantos retornos que serão inúteis (pelo menos eu teria que rolar para o topo para ver os primeiros resultados ).

Se houver uma maneira de fazer com que "se o usuário pesquisou cinco termos e eles retornaram algo, não execute as outras 4 condições

Eu tentei executar exit após cada instrução, esse é o tipo de coisa que desejo Eu preciso que a janela do terminal permaneça aberta.

    
por relidon 21.03.2016 / 05:25

1 resposta

0

Use return em vez de exit para retornar de uma função de shell.

Se você estiver usando bash ou algum outro shell com ajuda interna, digite help return para detalhes. Caso contrário, consulte a página do manual do seu shell.

    
por 21.03.2016 / 05:40