LINUX.ORG.RU
решено ФорумTalks

Синтаксис сравнения строк в test

 , ,


0

1

Наткнулся на башевый скрипт с примерно такой строкой: if [[ ${CURRENT_VERSION} == *"2.2."* ]]; then. Для чего тут обрамление строки звёздочками за кавычками и где об этом почитать? В мануале к test я про это ничего не нашёл. Система - Centos 7.4, если кому интересно.

★★★★★
~ >>> if [[ "foo-2.2.1-bar" == *"2.2."* ]]; then echo TRUE; else echo FALSE; fi                         
TRUE
~ >>> if [[ "foo-2.2.1-bar" == "2.2." ]]; then echo TRUE; else echo FALSE; fi                           
FALSE
veyayawet
()
Ответ на: комментарий от Ja-Ja-Hey-Ho

Да, нашёл там упоминание о Pattern Matching внутри [[ expression ]], спасибо. Выходит bash вообще не вызывает test в этом случае, а делает всё сам?

bbk123 ★★★★★
() автор топика
Ответ на: комментарий от YAR

На маке или в mingw вполне может быть и древний (хотя, тут, похоже не тот случай). К тому-же, насколько я помню, были версии где регэкспы были слегка поломаны, вроде.

Ну, и, как это не странно, не все знают о встроенных регэкспах в баше. Сам вот недавно удивил коллегу девопса с 10 летним стажем данной фичей. А регэкспы в баше, на мой взгляд - очень удобные. Особенно радует что нет наркоманского экранирования при подстановках переменных.

Или, может, автор подумал что обычная «маска» будет быстрее работать...

DawnCaster ★★
()
Последнее исправление: DawnCaster (всего исправлений: 4)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.