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.
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.
Tags bash shell-script control-flow