Shell globbing, не соответствуя файлам

Регистрация каталога lightdm во время выполнения. На Дуге с systemd и lightdm, когда пользователь входит в систему, создается xauthority файл.

$ whoami
carl
$ sudo ls -al /run/lightdm/carl
total 4
drwx------ 2 carl    carl     60 Dec 11 19:40 .
drwx--x--x 8 lightdm lightdm 160 Dec 11 19:40 ..
-rw------- 1 carl    carl     55 Dec 11 19:40 xauthority

Вы могли протестировать на это с чем-то вроде этого в Вашем цикле с условием продолжения.

[[ -f /run/lightdm/${USER}/xauthority ]] && continue
2
24.03.2015, 10:22
2 ответа

Нельзя делать оболочку без соответствующих файлов. Вам нужно расширение brace:

gitk master@{{1..5}}

или:

gitk master@{{1,2,3,4,5}}

С формой {x...y}, вам нужно zsh 2.6-beta4 и позже, bash 3.0 и позже, ksh93r и позже.

{x,y} было оригинальным в csh и скопировано в Борн как панцирь сначала в ksh.

3
27.01.2020, 22:00

В хотя бы Bash вы можете использовать диапазоны, например,

$ echo gitk master@{{1..5}}
gitk master@{1} master@{2} master@{3} master@{4} master@{5}

Очевидно, что эхо используется выше, просто чтобы показать, что происходит.

Это работает для букв, а также:

$ echo /dev/sd{x..z}
/dev/sdx /dev/sdy /dev/sdz

Примечание: Соответствие глобуса, и есть сопоставление REGEX. Это две разные вещи. Оболочка делает глобуют сопоставление. Итак Оболочка Regex Globbing не вещь.

1
27.01.2020, 22:00

Теги

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