質問

私の基本的なループように:

for(int i = 0; i < MAX; i++) {
  doSomething(i);
}

がbashの場合.

役に立ちましたか?

解決

から このサイト:

for i in $(seq 1 10);
do
    echo $i
done

他のヒント

for ((i = 0 ; i < max ; i++ )); do echo "$i"; done

のbash for される変数の反復子)の一覧の言葉の反復子は、反復処理.

る場合でも、制限リストの言葉をいただけるようになって、次の構文:

for w in word1 word2 word3
do
  doSomething($w)
done

しょうたいに対して繰り返し処理を実行するものが利用できる seq コマンドを生成する数値のリスト専用に作成する方法もあります。(1から100例)

seq 1 100

そのためループ:

for n in $(seq 1 100)
do
  doSomething($n)
done

注意 $(...) 構文です。ではbashの行動でき、パスを出力からコマンド(この例から seq について他の for)

これは本当に有きに対して繰り返し処理を実行するすべてのディレクトリの一部のパスは、例えば:

for d in $(find $somepath -type d)
do
  doSomething($d)
done

その可能性は無限のリストが表示されます。

Bash 3.0+ この構文:

for i in {1..10} ; do ... ; done

..回避する産卵を外部プログラムの拡大のシーケンスなど seq 1 10).

もちろん、これと同じ問題が for(()) 溶液に縛られbashでも特定のバージョン(この項れます。

試しに bash 内蔵ヘルプ


$ help for

for: for NAME [in WORDS ... ;] do COMMANDS; done
    The `for' loop executes a sequence of commands for each member in a
    list of items.  If `in WORDS ...;' is not present, then `in "$@"' is
    assumed.  For each element in WORDS, NAME is set to that element, and
    the COMMANDS are executed.
for ((: for (( exp1; exp2; exp3 )); do COMMANDS; done
    Equivalent to
        (( EXP1 ))
        while (( EXP2 )); do
            COMMANDS
            (( EXP3 ))
        done
    EXP1, EXP2, and EXP3 are arithmetic expressions.  If any expression is
    omitted, it behaves as if it evaluates to 1.


私は一般的に使用で若干の変異体は、標準ループを実行します。私はよくこの実行コマンドのリモート。しかbashのブレース展開をループするかを数値のために-タイルです。

例:

たいへのアップタイムコマンドがフロントエンドホスト1-5、バックエンドホスト1-3:

% for host in {frontend{1..5},backend{1..3}}.mycompany.com
    do ssh $host "echo -n $host; uptime"
  done

私はこのため、表現や内容につきましてはコマンドラインとセミコロンを終了し、ラインの代わりにより可読版です。鍵の利用を考えるブレースできる複数指定値を挿入する文字列(例:前{foo、bar、お}後の結果prefoopost,prebarpost)を数/配列をダブル期間を使用することができa..zます。しかし、ダブル期間構文の新機能bash3.0;以前のバージョンには対応いたしません。

#! /bin/bash

function do_something {
   echo value=${1}
}

MAX=4
for (( i=0; i<MAX; i++ )) ; {
   do_something ${i}
}

以下に例を示しますことを働きかけることができ古い殻、まだ効率的な大規模数:

Z=$(date) awk 'BEGIN { for ( i=0; i<4; i++ ) { print i,"hello",ENVIRON["Z"]; } }'

も頑張って便利なものが内 awk: 使い方を教えてくださいシェル変数によるawkプ

だintereasedみbashの"用((...))"ソリューション表記は最高だっPOSIX SH対応することがすべてのunicesまいの利用"expr"と"が"ことになるので"(())の"配列番号"または"i=i+1"となる携帯型の中で様々な貝殻

んーならではのバリエーションすべてのファイルを処理...

のためのファイル*.ログ;いecho"なもの:$ファイル";echo"いもの:$ファイル";これまで

れば処理表のファイルがうまいので、 -execdir オプション ファイル.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top