シェルスクリプトで実行される次のコードがあります
foo=`seq 1 1 100`
for i in $foo; do
echo "input$i\_now"
done
ここに私の質問があります:ある条件下では、出力は印刷されますが、input1_now
そうでない場合は印刷されinput1\_now
ます。何かが違うと確信していますが、何が原因でどちらの方法で印刷されるのかわかりません。私のコードが
for i in $foo; do
echo "input$i_now"
done
input
行の残りの部分を省略して、常に取得します。
代わりに使用input${i}_now
して毎回正しく印刷できることはわかっていますが、一見同じ条件下で出力が異なる理由を理解することに主に関心があります。
アップデート:
次の例では、最初の部分で変数とテキストが正しくフォーマットされており、\_
が に置き換えられてい_
ます。ただし、最後の部分では、変数を正しくフォーマットするために、変数を中括弧で囲む必要がありました。
echo "Enter Simulation #: "
read sim
g.mapset results
for i in `seq 1 1 100`; do
file=sim$sim\_run$i\_sum
g.copy $file\@expSim$sim\_$i,$file
file=sim$sim\_run$i\_average
g.copy $file\@expSim$sim\_$i,$file
for year in `seq 2004 1 2006`; do
file=sim$sim\_$year\_run$i\_sum
g.copy $file\@expSim$sim\_$i,$file
file=sim$sim\_$year\_run$i\_average
g.copy $file\@expSim$sim\_$i,$file
done
years="2004 2005 2006"
times=`seq -w 1 16 365`
runs=`seq 1 1 100`
for year in $years; do
for ptime in $times; do
for i in $runs; do
if [ $i -eq 1 ]; then
g.copy vect=sim${sim}_pts_${year}_${ptime}_run${i}@expSim${sim}_${i},sim${sim}_pts_${year}_${ptime}
fi
if [ $i -gt 1 ]; then
v.patch input=sim${sim}_pts_${year}_${ptime}_run${i}@expSim${sim}_${i} output=sim${sim}_pts_${year}_${ptime} -e -a --o
fi
done
done
done