#bash #shell
#bash #оболочка
Вопрос:
У меня есть текстовый файл, вызовите его out
, в котором есть одна строка. Содержимое этой строки является либо действительным числом, либо строкой "Continue"
.
У меня есть скрипт bash, в котором я выполняю некоторые команды, которые приводят к изменению файла out
. Мне нужно продолжать выполнять команды, пока одна строка out
равна "Continue"
.
Как мне это сделать с помощью скрипта bash?
Другими словами, мне нужно выполнить a while
при условии, что содержимое файла out
равно "Continue"
. Как?
Комментарии:
1. Было бы полезно получить более подробную информацию. Что это такое, что изменяет файл? Похоже, вам вообще не нужно записывать в файл до конца цикла.
2. @TomFenech Внутри цикла я запускаю исполняемый файл, который записывает в файл. Я подумал, что это не имеет значения, поэтому я не добавил его к вопросу. Если вы так думаете, я могу отредактировать.
3. @becko Что-то вроде
while [[ $(<file) =~ 'Continue' ]]; do ... ; done
?4. @BroSlow я полагаю. Что такое
file
? Это строковый путь к файлу? И что это=~
?5. @becko Да, так оно и есть.
Ответ №1:
Простейшим синтаксисом было бы сделать что-то вроде.
while [[ $(<file) == Continue ]]; do ... ; done
Где $(<file)
эквивалентно $(cat file)
, но быстрее.
Комментарии:
1. Почему вы хотите добавить задержку в 1 секунду?
while
Условие будет оцениваться только один раз при каждом завершении внутреннего тела цикла.2. @TomFenech Да. Выполнение чего-либо в теле само по себе задержало бы его и, похоже, не так интенсивно в моей системе, поэтому удалил эту часть.
3. @TomFenech Я в замешательстве, где предположительно скрывается эта задержка в 1 секунду?
4. Извините, это то, что меня смутило. Спасибо.