开发者

zsh for loop exclusion

开发者 https://www.devze.com 2023-01-01 05:31 出处:网络
This is somewhat of a simple question, but for the life of me, I cannot fig开发者_StackOverflow社区ure out how to exclude something from a zsh for loop.For instance, let\'s say we have this:

This is somewhat of a simple question, but for the life of me, I cannot fig开发者_StackOverflow社区ure out how to exclude something from a zsh for loop. For instance, let's say we have this:

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

Let's say that in /home/user/settings/, there is a particular directory ("os") that I want to ignore. Logically, I tried the following variations:

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*

...but none of those seem to work. Could someone steer my syntax in the right direction?


It looks to me that the extra $ may be what's causing your grief.

Try this:

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

If you want to limit ${package} to just directories, use /home/user/settings/^os(/).

Also ensure that you have extendedglob set (which I think you do since ls works for you):

> set -o  | grep -i extendedglob
extendedglob          on


That for loop works for me if I set -o EXTENDED_GLOB (or setopt EXTENDED_GLOB).

0

精彩评论

暂无评论...
验证码 换一张
取 消