2016-09-01 4 views
5

中の数字の配列との配列を作成します。私は私に次の値を持つ配列を作成するスクリプト書きたいbashの

を次のように私は、スクリプトを使用していた今まで

{0.1 0.2 0.3 ... 2.5} 

plist=(0.1 0.2 0.3 0.4) 
for i in ${plist[@]}; do 
    echo "submit a simulation with this parameter:" 
    echo "$i" 
done 

しかし、今ではリストをもっと長くする必要があります(ただし一定の間隔で)。

このような配列を1つのコマンドで作成する方法はありますか?そのようなリストを作成する最も効率的な方法は何ですか?

+1

間隔が一定であれば、インデックスを取り、値を返す関数をしない理由それを計算することによって? –

+1

間隔が一定の場合、トレイ 'seq'コマンド。 – Jdamian

答えて

11

seqを使用すると、seq FIRST STEP LASTと言うことができます。あなたのケースでは:

seq 0 0.1 2.5 

そして、それは、配列内のこれらの値を格納する問題です:

vals=($(seq 0 0.1 2.5)) 

あなたは、その後に値を確認することができます

$ printf "%s\n" "${vals[@]}" 
0,0 
0,1 
0,2 
... 
2,3 
2,4 
2,5 

はい、私のロケール小数点の代わりにカンマを持つように設定されています。これは設定をLC_NUMERIC="en_US.UTF-8"に変更することができます。

ちなみに、brace expansionでは、増分を設定することもできます。問題は、それが整数でなければならないことである。

$ echo {0..15..3} 
0 3 6 9 12 15 
3

バッシュがループのCスタイルをサポートしています。

$ for ((i=1;i<5;i+=1)); do echo "0.${i}" ; done 
0.1 
0.2 
0.3 
0.4 
関連する問題