Почему следующий код не работает в bash? Заметьте, я пытаюсь выполнить более сложное сравнение, такое как «somestring \ r»; это просто упрощенный пример.Выполнение сравнения строк с возвратом каретки в bash
Я могу подтвердить, что возврат каретки «ascii 13» входит в сценарий. Но я не могу сравнивать его с регулярным сопоставлением строк.
Ожидаемый результат: «1» для положительного совпадения.
Командная строка:
echo -e "\r" | ./test.sh
Сценарий:
ord() {
printf '%d' "'$1"
}
read a
echo "1st char: $(ord ${a:0:1})"
left="${a:0:1}"
if [ "$left" = "\r" ]; then
echo 1
fi
exit 0
хорошая попытка, но то, что я хочу, - это сравнение точных совпадений с подстрокой. – Zhro
Просто замените '= ~' '' ''. Синтаксис '$ '...'' не является особым для соответствия регулярному выражению; это всего лишь способ построения строки, в которой некоторые экранированные символы имеют особое значение. – chepner
@Zhro chepner уже упоминается в комментарии. Однако см. Приведенное выше изменение. – devnull