첫 번째 elif가 true이면 다음 elif로 계속 진행하지 않는 방법은 무엇입니까?

첫 번째 elif가 true이면 다음 elif로 계속 진행하지 않는 방법은 무엇입니까?

터미널에서 텍스트 파일 목록을 찾기 위해 디렉터리를 검색하고 싶습니다. 지나치게 생각하지 않기 위해 몇 단어를 검색할 수 있고 싶습니다. 예를 들어 search one two three이름에 해당 단어가 두 개 이상 포함된 파일이 있는 경우 해당 단어를 반환합니다. 이것은 내 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이것이 내가 원하는 것입니다열린 상태를 유지하려면 터미널 창이 필요합니다.

답변1

쉘 함수에서 복귀하는 return대신 사용하십시오 .exit

bash이나 내장된 도움말이 있는 다른 쉘을 사용하는 경우 help return자세한 내용을 입력하십시오. 그렇지 않으면 쉘의 매뉴얼 페이지를 참조하십시오.

관련 정보