![Как сравнивать строки в ksh](https://rvso.com/image/97233/%D0%9A%D0%B0%D0%BA%20%D1%81%D1%80%D0%B0%D0%B2%D0%BD%D0%B8%D0%B2%D0%B0%D1%82%D1%8C%20%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8%20%D0%B2%20ksh.png)
Я хочу проверить результат задания и выполнить действие 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]" ]]