zsh для исключения цикла

Это - своего рода простой вопрос, но ни за что в жизни, я не могу выяснить, как исключить что-то из zsh для цикла. Например, скажем, у нас есть это:

for $package in /home/user/settings/*
do
  # do stuff
done

Скажем, это в /home/user/settings/, существует конкретный каталог ("OS"), которую я хочу проигнорировать. Логически, я попробовал следующие изменения:

for $package in /home/user/settings/^os (works w/ "ls", but not with a foor loop)
for $package in /home/user/settings/*^os
for $package in /home/user/settings/^os*

... но ни один из тех, кажется, не работает. Кто-то мог регулировать мой синтаксис в правильном направлении?

8
задан ABach 23 May 2010 в 04:10
поделиться

2 ответа

Мне кажется, что лишние $ могут быть причиной вашего горя.

Попробуйте следующее:

for package in /home/user/settings/^os; do
    echo "Doing stuff with ${package}..."
done

Если вы хотите ограничить $ {package} только каталогами, используйте / home / user / settings / ^ os (/) .

Также убедитесь, что у вас установлен extendedglob (что, я думаю, вы делаете, поскольку ls работает на вас):

> set -o  | grep -i extendedglob
extendedglob          on
8
ответ дан 5 December 2019 в 18:57
поделиться

Этот цикл for работает у меня, если я установил -o EXTENDED_GLOB (или установил EXTENDED_GLOB ).

1
ответ дан 5 December 2019 в 18:57
поделиться
Другие вопросы по тегам:

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