Как использовать выражение reg в качестве переменной - PullRequest
0 голосов
/ 29 января 2019

Я использую ksh, и у меня есть каталог, полный файлов .csv и .CSV.Я хочу перечислить все CSV-файлы, как заглавные, так и строчные.Поэтому я набираю:

ls *@(CSV|csv)

, и в нем перечислены все файлы.

Но если я задаю регулярное выражение в качестве переменной, например:

REGEXP="*@(CSV|csv)"
ls $REGEXP

Iполучить ошибку

ls: cannot access *@(CSV|csv): No such file or directory

Может кто-нибудь объяснить, в чем разница между этими двумя командами и как ее исправить, чтобы я мог использовать переменную вместо записи регулярного выражения?

1 Ответ

0 голосов
/ 04 марта 2019

На самом деле это не регулярное выражение, а глобализация, как вы указали в теге [glob].

При глобализации используйте это:

$ ls *.[Cc][Ss][Vv]
a.csv  a.CSV  b.csv  b.CSV
$ GLOB=*.[Cc][Ss][Vv]
$ ls $GLOB
a.csv  a.CSV  b.csv  b.CSV
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...