Какое время в скрипте bash зависит от содержимого файла?

#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. Извините, это то, что меня смутило. Спасибо.