Это - своего рода простой вопрос, но ни за что в жизни, я не могу выяснить, как исключить что-то из 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*
... но ни один из тех, кажется, не работает. Кто-то мог регулировать мой синтаксис в правильном направлении?
Мне кажется, что лишние $
могут быть причиной вашего горя.
Попробуйте следующее:
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
Этот цикл for работает у меня, если я установил -o EXTENDED_GLOB
(или установил EXTENDED_GLOB
).