Script shell Unix: Boucle While

Je veux imprimer les nombres dans le modèle suivant en utilisant la boucle WHILE.

0 01 012 0123 ..... ...... 0123456789 

Mon essai:

 #!/bin/sh a=0 b=0 while [ $a -le 10 ] do while [ $b -le $a ] do echo -n "$b" b=`expr $b + 1` done echo a=`expr $a + 1` done 

Obtenir des résultats:

 0 1 2 3 4 5 6 7 8 9 10 

Comme vous ajoutez simplement le dernier compte à la sortie de la ligne, faites-le simplement en tant que texte.

 #!/bin/bash a=0 out='' while [ $a -lt 10 ] do out=$out$a echo $out a=`expr $a + 1` done 

En outre, le est inférieur ou égal, donc vous vous retrouvez avec 10. Utilisez lt 10 ou le 9 .

Si vous utilisez le shell bash , vous pouvez tirer parti des expressions de séquence de la forme {x..y} et utiliser le paramètre spécial $_ qui se développe généralement jusqu’au dernier argument de la commande précédente.

 #/bin/bash i= for i in {0..9} do echo "$_$i" done 
 a=0 b=1 while [ $a -lt 10 ] do a=0 while [ $a -lt $b ] do echo -n $aa=`expr $a + 1 ` done echo b=`expr $b + 1` done