如果条件第一次有效但第二次无效

如果条件第一次有效但第二次无效

我在函数中定义了以下 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

相关内容