2017-01-23 11 views
0

このスクリプトは、コマンドラインでプログラムに値を与え、端末の出力を対応するファイルに保存する必要があります。私は小数点の数字をファイルのラベルの一部として入れることができないので、各κに10000を掛けて整数にしてラベルとして使用するつもりですが、コードでは間違っていました。どのように正しくそれを知っている。どのように機能するのですか?ありがとうございました!bashループでのテキストファイルのラベル付け

#!/bin/bash 

for kappa in $(seq 0.0001 0.000495 0.01); 
    do 
     kappa_10000 = $kappa * 10000; 

     for seed in {1..50}; 
     do 
       ./two_defects $seed $kappa > "equilibration_step_seed${seed}_kappa${kappa_10000}.txt"; 
     done 
    done 
+0

最初に飛び出すのは5行目、 'kappa_10000 = $ kappa * 10000'です。 Bashでは、等号のまわりにスペースを入れないでください。また、あなたは数学の部分を間違っていると呼んでいます。 'kappa_10000 = $((kappa * 10000))' – Guest

+0

興味深い広範なクロスサイトの複製[ここ](http://unix.stackexchange.com/questions/40786/how-to-do-integer-float-calculations -in-bash-or-other-languages-frameworks)を使用します。 – Aserre

+0

等号の周りのスペースについてあなたが言ったことは非常に重要です!私は端末で遊んでいるときにもこれに気づいた!しかし、bashで浮動小数点演算を行うことはできません。 Thanks Guest –

答えて

2

バッシュは、@Inianによって指摘されている浮動小数値計算を行いません。 BCのようなプログラムを呼び出さなければならず、次のようにその出力を直接変数に格納することができる。

for kappa in $(seq 0.0001 0.000495 0.01) 
do 
    kappa_10000=$(echo "$kappa*10000/1" | bc) 
    echo kappa_10000 
done 

端子で出力/1操作をするために添加しなければならない

1 
5 
10 
15 
20 
25 
30 
35 
40 
45 
50 
55 
60 
65 
70 
75 
80 
85 
90 
95 
100 

あろう整数を出力する。

関連する問題