Affectation
F
-
zipe31 Messages postés 36402 Date d'inscription Statut Contributeur Dernière intervention -
zipe31 Messages postés 36402 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
chwi entrain d'écrire mon shell j'ai besoinde faire l'affectation suivante
(( total=prix * nbplaces ))
mais ché pas pourquoi il ne l'exécute pas :\ !!!
voici mon code :
if (($#==0))
then
echo "Quelle est votre destination"
exit 1
fi
dest=$1;
nbpalces=$2;
grep "$dest" voyage > v
cut -d: -f3 v > v1
read pldispo < v1
if (($pldispo != 0))
then
echo "il y a des places pour $dest , voulez vous résérver ? "
cut -d: -f2 v > v2
read prix < v2
(( total=prix * nbplaces ))
echo "Prix $prix par place , soit $total pour $nbplaces places . Entrer Y/N pour confirmer ? "
read A
if [[ $A = 'Y' ]]
then
echo "La reservation est effectuée"
pldispo=$((pldispo - nbplaces ));
echo $pldispo > v1
cut -d: -f1,2 v > v3
paste -d: v3 v1 > v4
grep -v "$dest" voyage >> v4
sort v4 > voyage
fi
fig>
chwi entrain d'écrire mon shell j'ai besoinde faire l'affectation suivante
(( total=prix * nbplaces ))
mais ché pas pourquoi il ne l'exécute pas :\ !!!
voici mon code :
if (($#==0))
then
echo "Quelle est votre destination"
exit 1
fi
dest=$1;
nbpalces=$2;
grep "$dest" voyage > v
cut -d: -f3 v > v1
read pldispo < v1
if (($pldispo != 0))
then
echo "il y a des places pour $dest , voulez vous résérver ? "
cut -d: -f2 v > v2
read prix < v2
(( total=prix * nbplaces ))
echo "Prix $prix par place , soit $total pour $nbplaces places . Entrer Y/N pour confirmer ? "
read A
if [[ $A = 'Y' ]]
then
echo "La reservation est effectuée"
pldispo=$((pldispo - nbplaces ));
echo $pldispo > v1
cut -d: -f1,2 v > v3
paste -d: v3 v1 > v4
grep -v "$dest" voyage >> v4
sort v4 > voyage
fi
fig>
1 réponse
Bonjour,
En shell, quand on affecte une variable, on donne uniquement son nom.
Par contre, quand on la rappelle pour obtenir son contenu, il faut obligatoirement la préfixer d'un signe $
Donc ça fonctionnera mieux :
Attention aussi à ça :
Si la variable A est vide, tu vas avoir un beau message d'erreur. La bonne manière de faire est :
En shell, quand on affecte une variable, on donne uniquement son nom.
Par contre, quand on la rappelle pour obtenir son contenu, il faut obligatoirement la préfixer d'un signe $
Donc ça fonctionnera mieux :
(( total=$prix * $nbplaces ))
Attention aussi à ça :
if [[ $A = 'Y' ]]
Si la variable A est vide, tu vas avoir un beau message d'erreur. La bonne manière de faire est :
if [ "$A" = "Y" ]
Attention aussi à ça : if [[ $A = 'Y' ]]
Si la variable A est vide, tu vas avoir un beau message d'erreur.
Pas avec les doubles crochets qui permettent de s'affranchir des quotes doubles ;-)