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