2

計算クラスター上のファイルを操作するために使用するbashスクリプトがあります。

私が操作しようとしているファイルの形式は次のとおりです。

beadSize=6.25
minBoxSize=2.2
lipids=1200
chargedLipids=60
cations=0
HEAD=0
CHEAD=-2
BODY=2
TAIL=3
ION=-1
RHO_BODY=10
RHO_TAIL=14
tol=1e-10
lb=7.1
FTsize=8
ROUNDS=1000000
ftROUNDS=10
wROUNDS=1000
dt=0.01
alpha=1
transSize=0.15
transSizeZ=0.0
ionsTransSize=2.8
ionsTransSizeZ=2.8
rotateSize=0.18
volSize=8
modSize=0.0
forceFactor=2
kappaCV=0
sysSize=26
zSize=300
iVal=1
split=0
randSeed=580

ループ内で関数を呼び出します。

for per in $(seq 70 -5 5); do
    for seed in {580..583}; do
        for c in {"fs","fd","bfs","bfd"}; do
            let count=$count+1
            startJob $per $seed $c $count
        done
    done
done

そして私が操作するために使用する線:

  let n=$1*12
  echo $n
  cat trm.dat | sed '/memFile*/d' | sed '/rStart*/d' | sed '/test*/d'| sed 's/modSize=[0-9.]*/modSize=0.0/' | sed 's/chachargedLipids=[0-9]*/chargedLipids="$n"/' | grep char #> propFile.dat 

たとえば$per=15、私は期待してい$n==180ます。ただし、スクリプトを実行すると、次のように表示されます。

180
chargedLipids=120

私は何が間違っているのですか?

私も使用しようとしたことに注意してください:

sed "s/chachargedLipids=[0-9]*/chargedLipids=$n/"

同じ結果になります。

4

1 に答える 1

3

chacharged!= charged、そして最後のsedは何もしていません。chargedLipids="$n"一重引用符を使用すると、置換が行われた場合に出力に文字通りのテキストが表示されることが期待されます。

于 2012-07-18T11:51:24.313 に答える