Почему некоторые переменные оболочки имеют двойные скобки?

Для оригинальных простых примеров, которые вы перечислили, abc_[0-9]*.xyzбудет работать. Это, очевидно, будет соответствовать некоторым вещам, кроме чисел, но исключит файлы def, которые вы указали в качестве первого символа после первого подчеркивания, не являющегося цифрой в этих случаях.

Для более сложных примеров, вероятно, пришло время развертывания find, чтобы мы могли использовать регулярные выражения:

$ ls
abc_123_123.xyz  abc_123.xyz  abc_234_234.xyz  abc_234.xyz  abc_345_345.xyz  abc_345.xyz  abc_def_123.xyz  abc_def_234.xyz  abc_def_345.xyz
$ find. -regex '\./abc_[0-9]+\.xyz'
./abc_345.xyz
./abc_234.xyz
./abc_123.xyz

Это касается GNU find, другие варианты могут незначительно отличаться.

0
26.02.2021, 22:27
1 ответ

Подобные круглые скобки используются для инициализации индексированных и ассоциативных массивов Bash . Пустая пара скобок представляет собой пустой массив.

Все эти переменные описаны в документации Bash :BASH_CMDS, BASH_LINENO, BASH_SOURCE.

2
18.03.2021, 22:28

Теги

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