web-dev-qa-db-fra.com

Imprimer deux variables sur une ligne

Je voulais imprimer deux variables dans une ligne. J'utilise une boucle de script Shell #!/bin/sh et je voulais faire une répétition de for qui affiche quelque chose comme:

variable1_case1
variable2_case2

et j'ai déjà essayé

variable$i_case$i.
2
George Nostradamos
for i in 1 2; do
  echo variable${i}_case$i
done

devrait faire ce que vous voulez. Remplacez 1 2 par les nombres ou les chaînes dont vous avez besoin. En fonction des valeurs de $i, vous devrez peut-être le citer comme suit: echo variable"$i"_case"$i".

5
dessert

Je suppose que le problème dans votre script est que vous essayez d'incorporer les noms de variables directement dans une chaîne de texte, de sorte qu'ils soient suivis par d'autres caractères pouvant faire partie d'un nom de variable. Ceux-ci n'incluent pas seulement des caractères alphanumériques, mais également le trait de soulignement.

Ainsi, si vous souhaitez incorporer des variables dans une chaîne de manière à ce qu'elles ne soient pas séparées du reste par des espaces ou des caractères sans nom de variable, vous pouvez utiliser la notation du nom de variable avec des accolades:

$ i=42
$ echo "variable${i}_case${i}."
variable42_case42.
4
Byte Commander

Peut-être que je me suis trompé de bâton, mais voulez-vous quelque chose comme ça:

#!/bin/sh
while read a b; do
    echo variable:${a}_case:${b}
done

qui va créer cette sortie:

/tmp/test.sh < /tmp/dat1 
variable:1_case:2
variable:3_case:4

et le fichier de données dat1 contenant:

1 2
3 4
0
Stefan