Unison: всегда используйте copyprog для обновлений

Когда шаблон содержит подвыражение \ (... \) , будет возвращена соответствующая строка.Такое поведение определяется POSIX :

В качестве альтернативы, если шаблон содержит хотя бы одно регулярное выражение подвыражение "[\ (... \)]", строка, соответствующая обратная ссылка выражение "\ 1" должно быть возвращено. Если выражение обратной ссылки "\ 1" не соответствует, то должна быть возвращена пустая строка.

Обратите внимание, что вам следует изменить команду на:

expr "$string" : '\(abc[A-Z]*.2\)'

, чтобы она работала во всех POSIX-совместимых expr . Использование совпадения не указано.

-1
12.09.2018, 02:38
2 ответа

Используйте readв вашем whileсостоянии:

while read -r a; do
  echo 'blah blah'
  case "$a" in
    a)
      echo 'blah blah'
      read -r b
      echo "line: $b"
      ;;
    *)
      echo 'invalid option'
      continue
      ;;
  esac
done

Это приведет к выходу из цикла, как только будет достигнут конец файла.

0
28.01.2020, 05:12

Было бы неплохо посмотреть, что Ваш скрипт делает в первую очередь. Когда вы читаете такой файл, вы можете прочитать содержимое файла с помощью цикла while :

while read p; do
   echo $p
done <&0

Цикл сразу назначит одну строку файла переменной p . Обратите внимание на оператор перенаправления в конце цикла -, он перенаправляет стандартный ввод.

0
28.01.2020, 05:12

Теги

Похожие вопросы