2017-05-27 10 views
0

linuxのforループに引用符( '')が必要です。 forループLinuxのBash forループ引用符( '')

ザ・は次のようになります。

i=1 
for factor in 5 10 15 20 25 30 40 50 75 100; do 
./libFM -task r -train train.txt.libfm -test test.txt.libfm -dim '1,1,$factor' -method sgd -learn_rate 0.001 -init_stdev 0.1 -iter 1000 -out ((i++))_factor_SGD.txt 
done 

これは(最初の2つのループ用)次のような出力できます:

./libFM -task r -train train.txt.libfm -test test.txt.libfm -dim 1,1,$factor -method sgd -learn_rate 0.001 -init_stdev 0.1 -iter 1000 -out 1_factor_SGD.txt 
./libFM -task r -train train.txt.libfm -test test.txt.libfm -dim 1,1,$factor -method sgd -learn_rate 0.001 -init_stdev 0.1 -iter 1000 -out 2_factor_SGD.txt 

をしかし、私は(このように見える出力を必要とします最初の2つのループ):

./libFM -task r -train train.txt.libfm -test test.txt.libfm -dim '1,1,5' -method sgd -learn_rate 0.001 -init_stdev 0.1 -iter 1000 -out 1_factor_SGD.txt 
./libFM -task r -train train.txt.libfm -test test.txt.libfm -dim '1,1,10' -method sgd -learn_rate 0.001 -init_stdev 0.1 -iter 1000 -out 2_factor_SGD.txt 

などです。

どうすればよいですか?出力内に一重引用符( '')を付けることができません。

+1

二重引用符を使用の代わりに、単一の。単一引用符の内部変数は展開されません –

答えて

-1

私は、コードは次のようになりする必要がawnser

が見つかりました:

i=1 
for factor in 5 10 15 20 25 30 40 50 75 100; do 
./libFM -task r -train train.txt.libfm -test test.txt.libfm -dim \'1,1,$factor\' -method sgd -learn_rate 0.001 -init_stdev 0.1 -iter 1000 -out ((i++))_factor_SGD.txt 
done 
+0

いいえ、実際の*引用符は 'libFM'に渡されます。 'factor 'は実際には単純な数値なので、' -dim 1,1、$ factor'も*これ以上のものはないでしょう。 – chepner

関連する問題