Как сравнить строки в ksh

Я хочу проверить результат работы и выполнить действие на FAILED .

Сначала: grep последнее слово строки в моем лог-файле приложения (для последнего обработанного файла ( $processedfilename файла)):

 check1=$(grep "$processedfilename" "$logfile" | grep "anotherword" | \ grep "FAILED" | tail -1 | awk '{print $NF}') 

Это приводит к [FAILED] .

Теперь я хочу проверить результат

 if [ $check1 -eq "[[FAILED]" ] then 

или

 if [ $check1 -eq "\[FAILED]" ] then 

Всегда есть арифметическая синтаксическая ошибка .

Каков правильный синтаксис для проверки на [FAILED] ?

2 Solutions collect form web for “Как сравнить строки в ksh”

Вы всегда должны удвоить переменные кавычек. И вам нужно = для равных строк. Так:

 if [ "$check1" = "[FAILED]" ]; then 

Вы выполняете арифметическое сравнение с помощью -eq приводящего к ошибке, вам нужно выполнить сравнение строк с помощью = (или == inside [[ )), и для этого достаточно использовать кавычки:

 [ "$check1" = "[[FAILED]" ] [[ "$check1" = "[[FAILED]" ]] 
  • Правильное литье типов в сценарии оболочки для использования с циклом while и модулем
  • Как узнать, существует ли каталог?
  • awk системный вызов с инвертированным эффектом
  • Некоторые ошибки возникли, когда я установил lucene, модуль perl!
  • Что означает '-size +0' в команде 'test'
  • bourne shell, если
  • Как использовать отрицание команды в цикле while с grep в сценарии оболочки?
  • Как сделать вывод для grep неудачным?
  • Как сравнить версию программы в сценарии оболочки?
  • Linux и Unix - лучшая ОС в мире.