Если условие работает впервые, но не во второй раз

Я определил нижеследующее для и если условие в функции. Впервые он работает хорошо. Во второй раз он не запускается после цикла for, он просто пишет инструкцию echo. Почему он ведет себя так?

for outputFile in $outputFiles do echo"Output file is $outputFile" if [ $outputFile == sampple*.pdf ]; then FromFile=$OutputFilePath transferFiles fi done 

  • "Test -n && echo not empty" печатает "not empty". Это ожидаемое поведение?
  • Разница между ] и ]?
  • Настройка зашифрованных папок с помощью ecryptfs на Raspbian
  • ожидаемое целочисленное выражение
  • «Если переменная не содержит« не работает »
  • Что означает -o означает «если»?
  • Тест POSIX и -a
  • Проверьте, если номер из диапазона <0, бесконечность)
  • One Solution collect form web for “Если условие работает впервые, но не во второй раз”

    Чтобы выполнить тест на строку с шаблоном globbing файла, используйте 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 
    Linux и Unix - лучшая ОС в мире.