zshの配列とループ

zshの配列とループ

ループと配列の操作を学びたいですzsh

zshに2つの同じ配列があるとしましょう。未知#要素、それぞれパスのリストを含みます。

LOCAL_ARRAY=($LOCAL_PATH_1 $LOCAL_PATH_2 $LOCAL_PATH_3)
REMOTE_ARRAY=($REMOTE_PATH_1 $REMOTE_PATH_2 $REMOTE_PATH_3)

次のことができるように、共通のインデックスを使用して両方の配列を同時に繰り返したいと思います。

cd $LOCAL_PATH_i
hg pull $REMOTE_PATH_i

各繰り返しで。 zshでどうすればいいですか?

また、ループ制御と配列を検索しました。zsh ドキュメントしかし、ほとんど成功していませんでした。良いものもありますか?地図時間基本を紹介しました。サイクルソートzshで待っていますか? BashやShellスクリプトの経験はありませんが、プログラミングの背景知識を持つ人に適していますか?

ベストアンサー1

部分15.2.1 「配列の添字化」配列はインデックスとして使用でき[exp](ここexpでは数値式)、要素がインデックス1(KSH_ARRAYSまたは設定されている場合は0)で始まることを示します。

部分14.3 「パラメータ拡張」構文が${#array_name}配列要素の数まで拡張されることを示します。

部分6.3 「複雑なコマンド」数を繰り返す構文を提供しますfor(例:C言語)
for (( initExpr ; testExpr ; stepExpr )) do … done

一緒に入れてください:

for (( i = 1; i <= $#LOCAL_PATH; i++ )) do
    ( # subshell to contain the effect of the chdir
        cd $LOCAL_PATH[i]
        hg pull $REMOTE_PATH[i]
    )
done

または以下を使用する場合KSH_ARRAYS

for (( i = 0; i < ${#LOCAL_PATH[@]}; i++ )) do
    ( # subshell to contain the effect of the chdir
        cd ${LOCAL_PATH[i]}
        hg pull ${REMOTE_PATH[i]}
    )
done

を使用すると、KSH_ARRAYS配列はインデックス0から始まり、配列式に中括弧を使用し、次のように解釈$arrayされます$array[0](配列長式を変更する必要があります)。必要な構文の変更KSH_ARRAYはなくても機能しますKSH_ARRAYが、まださまざまなインデックス範囲(1〜N対0〜N-1)のロジックを調整する必要があります。

おすすめ記事