chaîne de formatage dans bash

J'ai le code suivant qui fonctionne dans un script shell,

foo=`seq 1 1 100`
for i in $foo; do
  echo "input$i\_now"
done

Voici ma question: Sous certaines conditions, la sortie des impressions input1_now alors que othertimes il imprime input1\_now. Je suis sûr que quelque chose est différent, mais je ne peux pas comprendre ce qu'il fait imprimer un sens ou dans l'autre. Si mon code est

for i in $foo; do
   echo "input$i_now"
done

Je reçois toujours input avec le reste de la ligne étant omis.

Je sais que je peux utiliser input${i}_now au lieu et s'imprimer correctement à chaque fois, mais je suis surtout intéressé à comprendre pourquoi la sortie est différente en apparence les mêmes conditions.

Mise à JOUR:

Dans l'exemple suivant, la première partie correctement formats variables et de texte tel que le \_ est remplacé comme _. Cependant, la dernière partie m'a obligé à la place des variables dans les accolades, afin de les avoir mis en forme correctement.

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
  • Il imprime inputx\_now cohérente pour moi.
InformationsquelleAutor ShaunLangley | 2013-04-16