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

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

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

  • Управление графическим интерфейсом Gnome через Bash?
  • .bash_profile alias escape кавычки?
  • превалить не удается; 20 процессов недостаточно для bash?
  • Выделите разделители пути в PS1
  • Как получить имя пользователя, выполнившего скрипт bash как sudo?
  • Повторить последнюю команду N раз
  • Tmux - Получить количество панелей в текущем окне в переменной bash?
  • Как я могу «кэшировать» переменную в Bash?
  • Как я могу получить размер файла в сценарии bash?
  • Linux на жестком диске, загрузчик на USB-накопителе
  • Полученное значение из ассоциативного массива неверно?
  • Определение псевдонимов для определенного каталога
  • 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 - лучшая ОС в мире.