조건이 처음에는 유효하지만 두 번째에는 유효하지 않은 경우

조건이 처음에는 유효하지만 두 번째에는 유효하지 않은 경우

함수에서 다음 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

여기에서는 및 대신 및 가 사용된다는 점에 [[ ... ]]유의 하세요 .=~[ ... ]==

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

[[ ... ]]및 의 경우 ==오른쪽은 파일 글로빙 패턴으로 처리됩니다. 따라서 다음 항목도 유효해야 합니다( bash또는 에서).ksh93

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

관련 정보