29

私はの手順も役立つと確信しています。

lw配列に格納された値を調べ、配列に格納された名前の値に基づいてシェル スクリプトを起動するfor ループが必要です。

これまでのところ、これは私が思いついたものです:

$lw=('plugin1' 'plugin2' 'plugin3')

for i in $lw;
  do . ~/Library/Rogall/plugins/$lw[$i]/lw.prg end;
done

これを実行すると、見つからないというエラーが表示されます~/Library/Rogall/plugins//lw.prg。私の変数をすべて無視しているように見えます。

私が台無しにしたアイデアはありますか?

4

4 に答える 4

54

実際にはそれよりもはるかに簡単です:

lw=('plugin1' 'plugin2' 'plugin3')

for i in $lw; do
  . ~/Library/Rogall/plugins/$i/lw.prg end
done

要約すれば:

  • 割り当て先fooではなく$foo(シェルは展開を試み、展開先$fooに割り当てようとします。通常は役に立ちません)
  • ループ変数を直接使用します。インデックスではなく配列値が含まれています
于 2012-06-04T20:12:48.273 に答える
27

なぜわざわざ配列を使用するのですか? これは、移植可能な sh で非常に簡単に実行できます。

lw='plugin1 plugin2 plugin3'

for i in $lw;
  do . ~/Library/Rogall/plugins/$i/lw.prg end
done

これを zsh で機能させるには、zsh が次のように正しく動作するようにする必要があることに注意してください。set -o shwordsplit

于 2012-06-04T20:31:17.687 に答える