如果條件第一次有效但第二次無效

如果條件第一次有效但第二次無效

我在函數中定義了以下 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要根據or中的正規表示式對字串進行測試ksh93

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

請注意這裡使用的是[[ ... ]]and=~而不是[ ... ]and ==

[ ... ]構造通常不支援==用於比較字串的運算子。

對於[[ ... ]]==,右側被視為文件通配模式。因此,以下內容也應該有效(在bash或中):ksh93

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

相關內容