조건이 처음에는 작동하지만 두 번째에는 작동하지 않는 경우

조건이 처음에는 작동하지만 두 번째에는 작동하지 않는 경우

함수에서 아래 for 및 if 조건을 정의했습니다. 처음으로 잘 실행됩니다. 두 번째로 for 루프 후에 실행되지 않고 echo 문만 작성합니다. 왜 이렇게 동작하는 걸까요?

for outputFile in $outputFiles
    do
            echo"Output file is $outputFile"

        if [ $outputFile == sampple*.pdf ]; then
            FromFile=$OutputFilePath
            transferFiles
         fi
done

답변1

파일 글로빙 패턴에 대해 문자열을 테스트하려면 다음을 사용하십시오 case.

case "$outputFile" in
    sampple*.pdf)
        FromFile="$OutputFilePath"
        transferFiles ;;
esac

bash또는 의 정규 표현식에 대해 문자열을 테스트하려면 다음을 수행하십시오 ksh93.

if [[ "$outputFile" =~ ^sampple.*\.pdf$ ]]; then
    FromFile="$OutputFilePath"
    transferFiles
fi

여기서는 and 대신 [[ ... ]]and를 사용한다는 점에 유의하세요 .=~[ ... ]==

구문은 일반적으로 문자열 비교 연산자를 [ ... ]지원하지 않습니다 .==

[[ ... ]]및 를 사용하면 ==오른쪽이 파일 글로빙 패턴으로 사용됩니다. 따라서 다음은 ( bash또는 ksh93)에서도 작동합니다.

if [[ "$outputFile" == sampple*.pdf ]]; then
   # as before
fi

관련 정보