Imprimer deux variables sans espace avec echo dans unix

VAR1=ABC; VAR2=XYZ; VAR3=PQR; 

Je veux imprimer la valeur de VAR1, VAR2 et VAR3 dans une boucle for. S’il vous plaît aider!

En for loop , j’essaie de faire echo $VAR$i

O / P attendu:

 ABC XYZ PQR 

Sortie réelle:

 1 2 3 

Utilisez un tableau:

 VAR[1]=ABC VAR[2]=XYZ VAR[3]=PQR for i in 1 2 3 ; do echo ${VAR[i]} done 

Ou utilisez la variable indirection:

 VAR1=ABC VAR2=XYZ VAR3=PQR for i in 1 2 3 ; do name=VAR$i echo ${!name} done 

Vous pouvez le faire comme ceci:

 for i in 1 2 3 do eval "echo \$VAR${i}" done 

Le point clé est la commande eval .

Tester

 $ VAR1=ABC; VAR2=XYZ; VAR3=PQR; $ for i in 1 2 3; do eval "echo \$VAR${i}"; done ABC XYZ PQR 
 echo "${VAR1}${VAR2}${VAR3}" 

Aussi simple que cela. Je ne pense pas qu’il soit logique de créer des cycles inutiles pour concaténer plusieurs valeurs dans une chaîne.

Au lieu de

  echo $ VAR $ i 

en boucle faire

  varx = $ varx $ var $ i 

et initialiser varx en tant que chaîne vide et à la fin do

  echo $ varx 

Ceci est pour l’impression sans espace comme le suggère la question.