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

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

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

Во-первых: я проверяю последнее слово строки в файле журнала моего приложения (для последнего обработанного файла ( $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]?

решение1

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

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

решение2

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

[ "$check1" = "[[FAILED]" ]
[[ "$check1" = "[[FAILED]" ]]

Связанный контент