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