Ошибка при поиске строки в файле

Я попытался использовать цикл «case», но он не работает по неизвестной мне причине.

Это мой скрипт для цикла case.

echo "Do you wish to search again? [y/n]" read INPUT_STRING2 case $INPUT_STRING2 y) ;; *) exit ;; 

Тогда у меня возникают проблемы с попыткой сделать мой скрипт более удобным для пользователя, я хочу, чтобы мой скрипт сообщил пользователю, если строка не найдена, но я не могу понять это. Я попытался использовать случайный цикл вместо этого, но не повезло, и попытался использовать оператор else, но это не сработало.

 if grep -q $STRING $FILE ; then echo "string found" fi 

Эта часть работает, но не все, что я хочу.

3 Solutions collect form web for “Ошибка при поиске строки в файле”

Кажется, что «отсутствует» в строке с аргументом case, а также с закрытием esac :

 echo "Do you wish to search again? [y/n]" read INPUT_STRING2 case $INPUT_STRING2 in y) ;; *) exit ;; esac 

Вы сделали две ошибки синтаксиса (после переменной и esac в конце оператора case):

 echo "Do you wish to search again? [y/n]" read INPUT_STRING2 case $INPUT_STRING2 in "y") echo "Searching again" ;; *) exit ;; esac 

Я хочу, чтобы мой скрипт сообщил пользователю, если строка не найдена …. Я пробовал … использовать инструкцию else но это не сработало.

Что вы пробовали?

 if grep -q "$STRING" "$FILE" then echo "string found" else echo "string not found" fi 

работает.

PS Советую процитировать все ссылки на переменные оболочки (например, "$INPUT_STRING2" , "$STRING" и "$FILE" ), если у вас нет по-настоящему веской причины, и вы уверены, что знаете, делает. И наоборот, вам не нужно указывать константные строки (например, string found ), если они не содержат специальных символов. (Квадратные скобки – " [ " и " ] " – это специальные символы в этом контексте.) Но это хорошая идея, чтобы процитировать их в любом случае.

  • Логротация файла
  • Symlink для файла, который еще не существует
  • Присоедините два файла в пакетном режиме
  • Как округлить или преобразовать значение float в int с помощью bc? получение: "(standard_in) 1: синтаксическая ошибка"
  • Разделить CSV-файл на более мелкие файлы на основе некоторого условия
  • Переменная, случайным образом выбранная из трех чисел (10, 100 и 1000)
  • Запретить удаление файла даже после того, как rm -f
  • Выполнение параллельного скрипта из одного задания Cron
  • Как передать несколько аргументов через ssh и использовать эти аргументы в сценарии ssh?
  • Инвертировать результаты для "for in * do" -loops
  • Я хочу поймать STDERR и STDOUT сценария с фоновым запуском
  • Linux и Unix - лучшая ОС в мире.