Bash: регулярное выражение для сравнения путей к файлам

ls(или хорошо, stat(2)системный вызов )сообщает вам размер содержимого файла. Сколько места требуется файловой системе для ведения бухгалтерского учета, это не является частью этого, и как деталь реализации это не то, что программы в целом должны заботиться или даже знать об этом. Отображение деталей реализации сделало бы абстракцию файловой системы менее полезной.

2
01.06.2019, 19:46
1 ответ
path1="mydir/**"
path2="mydir/testing"

Здесь path1="mydir/**"используется шаблон раскрытия параметра глобуса, ведь это совершенно другой язык, чем RegEx, использованный в сравнении.

[ [ "$path2" =~ "$path1" ] ] && echo "Matches"

Но в условиях используется регулярное выражение:

[[ "$path2" =~ "$path1" ]]

Не добавляйте пробелы между [ [и ] ], а между [[и ]]

.

Объединение расширения параметров и регулярное выражение — это два разных языка шаблонов.

Если $path1содержит шаблон белого списка, вы должны записать его в RegEx следующим образом:

path1='mydir/.*'
path2="mydir/testing"

[[ ${path2} =~ ${path1} ]] && echo "Matches"

Справа находится переменная RegEx path1, и ее нельзя заключать в кавычки, иначе кавычки интерпретируются как буквальный "символ.

0
27.01.2020, 22:26

Теги

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