Partage
  • Partager sur Facebook
  • Partager sur Twitter

deux exercices de scripts shell à résoudre [aide]

Sujet résolu
4 juin 2011 à 18:24:51

Bonjour,

Exercice 1:
écrire un script shell qui prend en argument un nombre et renvoie son inverse sinon renvoie une erreur si le nombre d'arguments est différent de 1.

exemple : 123 ---> 321

voilà mon travail mais ça marche pas :
#!/bin/bash
a=0
b=0
if [ $# -ne 1]
then
echo "ereur"
else
until [ $a -eq 0 ]
do
a=$(($1/10))
b=$(($1%10))
echo -n "$b"
done
fi



Exercice 2:
écrire un script shell avec des boucles qui affiche :
1
22
333
4444
55555

ce que j'ai fait mais ça marche pas aussi :
#!/bin/bash
i=0
j=1
nbr=5
while [ $i -le $nbr ]
do
while [ $j -le $i ]
do
echo -n "$i"
j=$(($j+1))
done
i=$(($i+1))
echo -e "\n"
done


aidez-moi à les résoudre s'il vous plait , j'attends vos réponses , et merci d'avance
  • Partager sur Facebook
  • Partager sur Twitter
4 juin 2011 à 19:08:27

Pour le deuxième exercice, tu oublies de remettre ta variable j à 0.

Je regarde le premier.

Edit :

Pour le premier, tu as une énorme erreur de conception : tu travailles toujours sur la même valeur : $1. Il faut la mettre dans une variable que tu puisse modifier, par exemple, $a.

Ainsi, tu récupère d'abord $a%10, pour avoir le dernier chiffre, puis tu divises $a par 10, pour supprimer ce chiffre.

Travaille aussi ton indentation !
  • Partager sur Facebook
  • Partager sur Twitter
4 juin 2011 à 19:39:13

merci

pour le 1 j'ai fait comme vous m'avez dit je crois mais ça change rien

#!/bin/bash
a=0
b=0
c=$1
if [ $# -ne 1]
then
echo "ereur"
else
until [ $a -eq 0 ]
do
a=$(($c/10))
b=$(($c%10))
echo -n "$b"
done
fi


pour le deuxième ça y est j'ai trouvé la solution =)

#!/bin/bash
i=1
nbr=5
while [ $i -le $nbr ]
do
j=1
while [ $j -le $i ]
do
echo -n "$i"
j=$(($j+1))
done
i=$(($i+1))
echo
done

  • Partager sur Facebook
  • Partager sur Twitter
4 juin 2011 à 19:52:20

Pour le 1, inverse les lignes 11 et 12, et tu ne modifies toujours pas $c. Met $1 dans $a.
  • Partager sur Facebook
  • Partager sur Twitter
4 juin 2011 à 20:01:20

c'est bon merci beaucoup :D

#!/bin/bash
a=$1
b=0
if [ $# -ne 1]
then
echo "ereur"
else
until [ $a -eq 0 ]
do
b=$(($a%10))
a=$(($a/10))
echo -n "$b"
done
echo
fi
  • Partager sur Facebook
  • Partager sur Twitter
26 février 2024 à 12:15:15 - Message modéré pour le motif suivant : Merci d’utiliser le bouton code pour insérer un code sur le forum


26 février 2024 à 14:03:12

 @zico731      Bonjour, merci de ne pas squatter le sujet des autres, créer votre sujet dans le respect des règles du forum à savoir qu'un message commence par des règles de politesses (Un bonjour ou des salutations à la communauté et se termine par des remerciements par avances pour les futures réponses), la description de votre problème et le code que vous avez écrit inséré sur le forum à l'aide de l'outil d'intégration de code soit le bouton code </>.

Si vous répondez à la question d'origine, c'est bien de le faire mais faite le pour des sujets en cour pas pour d'ancien sujets résolus depuis 13 ans!!!

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Liens conseillés

Je ferme ici.

  • Partager sur Facebook
  • Partager sur Twitter