bash test — соответствие косой черте

Из-за низкого внимания сообщества мне удалось найти быстрое и грязное решение. Я создал небольшую программу, которая копирует образ файловой системы в /tmp (, смонтированный на tmpfs ), а затем прикрепляет его к петлевому устройству. Затем запускается udev, который устанавливает флаг UDISKS _IGNORE на петлевом устройстве. Затем петлевое устройство монтируется в /media. Ключевым моментом является то, что образ файловой системы действительно мал, просто для хранения файловой системы (2 МБ для ext2 или NTFS )и занимает минимальный размер при использовании tmpfs с начальным размером около 256 КБ, поэтому флэш-память вообще не страдает..

0
01.09.2018, 02:18
1 ответ

Я получил ответ на этот вопрос на StackOverflow :https://stackoverflow.com/questions/52123576/bash-test-match-forward-slashes/52123622

ответ:

[ ]— это единственная -квадратная скобкаtest(1)команда , которая не обрабатывает шаблоны так, как это делает bash. Вместо этого используйте двойную -квадратную скобку условное выражение bash[[ ]]. Пример:

$ current_branch='oleg/feature/1535693040'
$ [ "$current_branch" = '*/feature/*' ] && echo yes
$ [[ $current_branch = */feature/* ]] && echo yes
yes

Редактировать с помощью регулярных выражений:

$ [[ $current_branch =~ /feature/ ]] && echo yes
yes

Регулярное выражение может совпадать где угодно, поэтому вам не нужны начальный и конечный *(, которые были бы .*в регулярном выражении ).

ВНИМАНИЕ :косые черты здесь не являются разделителями для регулярного выражения, а являются литералами, которые должны сопоставляться где-то в строке. Например, [[ foo/bar =~ / ]]возвращает значение true. Это отличается от нотации регулярных выражений во многих языках.

1
28.01.2020, 02:42

Теги

Похожие вопросы