У меня есть файл, содержащий следующий текст.
channel: stable
installed-version: 6.45.6
status: finding out latest version...
channel: stable
installed-version: 6.45.6
latest-version: 6.45.6
status: System is already up to date
Я пытаюсь выполнить сравнение строк текста после последнего появления статуса:
System is already up to date
Мой сценарий выглядит следующим образом:
GOOD="status: System is already up to date"
STATUS=$(cat file.txt | grep status | tail -1 | tr -d '\r' )
if [ "$STATUS" != "$GOOD" ]
then
echo "There is a new version available"
else
echo "You are up to date"
Я заметил, что строка, назначенная $ GOOD, имеет длину 29 символов, а $ STATUS - 30 символов, поэтому согласно предложению я передал оба параметра в XXD.
Заметил, что $ STATUS имел 0d (возврат каретки) и использовал tr -d '\r'
для его удаления.
Теперь обе строки совпадают в HEX, но сравнение по-прежнему не удается.
Length of GOOD:37
Length of STATUS:37
00000000: 7374 6174 7573 3a20 5379 7374 656d 2069 status: System i
00000010: 7320 616c 7265 6164 7920 7570 2074 6f20 s already up to
00000020: 6461 7465 0a date.
00000000: 7374 6174 7573 3a20 5379 7374 656d 2069 status: System i
00000010: 7320 616c 7265 6164 7920 7570 2074 6f20 s already up to
00000020: 6461 7465 0a date.