Affectation

F -  
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>

1 réponse

gm
 
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 :
(( 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" ] 
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
Salut;

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 ;-)
0