8

これはやや単純な質問ですが、私の人生では、zsh for ループから何かを除外する方法がわかりません。たとえば、これがあるとしましょう:

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*

...しかし、どれも機能していないようです。誰かが私の構文を正しい方向に向けることができますか?

4

2 に答える 2

8

余分な$ものがあなたの悲しみを引き起こしているようです.

これを試して:

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
于 2010-05-23T09:06:08.887 に答える
1

その for ループは、I set -o EXTENDED_GLOB(またはsetopt EXTENDED_GLOB) の場合に機能します。

于 2010-05-23T08:49:26.810 に答える