Мне нужно лексикографически сравнить строки в скрипте bash. Проблема в том, что кажется, что bash полностью игнорирует символы '_', как будто их вообще нет. В кодовой таблице ascii '_' находится между прописными буквами и строчными буквами, поэтому я предполагаю, что AZ <_ <az, и это то, что на самом деле происходит в ОС Ma c, но не в Debian: </p>
1 $ if [[ "ab" < "a_" ]]; then echo 1; fi
2 $ if [[ "ab" < "a_a" ]]; then echo 1; fi
3 $ if [[ "ab" < "a_c" ]]; then echo 1; fi
1
4 $ if [[ "aZ" < "a_" ]]; then echo 1; fi
$
Команда № 3 также должна быть ложной, потому что '_' <'b', а команда № 4 должна быть истинной, потому что '_'> 'Z'.
Единственный логическое объяснение для меня состоит в том, что символы '_' просто опущены в Debian bash, поэтому "ab" <"a" -> false, "ab" <"aa" -> false, "ab" <"a c "-> true," aZ "<" a "-> false - вот что действительно оценивается.
Есть ли в Debian bash способ сравнить эти строки, рассматривая их символы '_' как их код ascii может предложить?
Спасибо