我有以下在 shell 脚本中运行的代码
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