条件が最初は有効ですが、2番目は無効です

条件が最初は有効ですが、2番目は無効です

関数で次の for 条件と if 条件を定義しました。最初はうまくいきました。 forループが実行されていない後、2番目に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

おすすめ記事