Как использовать отрицание команды в цикле while с grep в сценарии оболочки?

Есть ли способ использовать while loop и grep вместе? См. Мой пример:

while [[ !(grep -R -h "${text}" ${path}) ]]; do ... done 

В нем говорится:

 ./test_script.sh: line 1: conditional binary operator expected ./test_script.sh: line 1: expected `)' ./test_script.sh: line 1: syntax error near `-R' ./test_script.sh: line 1: `while [[ !(grep -R -h "${text}" ${path}) ]];' 

One Solution collect form web for “Как использовать отрицание команды в цикле while с grep в сценарии оболочки?”

  1. Не помещайте команды в квадратные скобки. Для цикла, пока grep удастся (т. grep Пока он не сработает), просто выполните

     while grep ... do ︙ done 
  2. Для цикла, пока сбой grep не выполняется (т. Е. До тех пор, пока он не удастся), выполните

     while ! grep ... do ︙ done 

    с пробелом между ! и команда.

  3. Вы всегда должны указывать ссылки на переменные оболочки (например, "$path" ), если у вас нет веских оснований, и вы уверены, что знаете, что делаете. Напротив, в то время как фигурные скобки могут быть важными, они не так важны, как кавычки, поэтому "$text" и "$path" достаточно хороши (вам не нужно использовать "${text}" и "${path}" , в этом контексте).

  4. Вам не нужна точка с запятой ( ; ) в конце строки while (если вы не поместите do после нее).

  • bash: -eq vs. == и `bc` тип вывода
  • shell scripting - несколько тестов равенства в одном выражении if
  • `test` и` [`- разные бинарные файлы, любая разница?
  • Правильное литье типов в сценарии оболочки для использования с циклом while и модулем
  • Как сравнить версию программы в сценарии оболочки?
  • awk системный вызов с инвертированным эффектом
  • Как сравнить строки в ksh
  • Как проверить, есть ли «другие» разрешения в домашних каталогах
  • Что означает '-size +0' в команде 'test'
  • Linux и Unix - лучшая ОС в мире.