[ Script ] Les OR dans les IF et des calculs en Bash

Les OR dans les IF et des calculs en Bash [ Script ] - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 18-02-2004 à 01:15:24    

Voici mon code:

if [ $1 == "" ]||[ $2 == "" ]||[ $3 == "" ]||[ $4 == "" ]||[ $5 == "" ]
then


Si tous les arguments sont passés alors pas de problème,
si il en manque un j'ai une erreur:

line 3: [: ==: unary operator expected


Je me demmande donc comment faire en un seul IF pour tester toutes ces conditions avec des OU (||) ???
 
Autre chose,
j'ai deux nombres dans deux varriables:
dix=10
huit=8
comment obtenir dans la varriable 'deux' la soustration des deux varriables ?
Voici mon code:

deux=$dix-$huit


Mais il ne marche pas
erreur:

line 1: 10-8: command not found


 
Merci pour votre aide :jap:

Reply

Marsh Posté le 18-02-2004 à 01:15:24   

Reply

Marsh Posté le 18-02-2004 à 01:19:13    

deux=`$dix - $huit`
respecte les espaces et les quotes (ceux de la touche [7] du clavier)

Reply

Marsh Posté le 18-02-2004 à 01:21:29    

avant de faire ton if là, tu fais:
if [ $# -eq 5 ];then
#ton if
else
#je c  pas ce que tu veux faire
fi

Reply

Marsh Posté le 18-02-2004 à 09:17:32    

riot a écrit :

deux=`$dix - $huit`
respecte les espaces et les quotes (ceux de la touche [7] du clavier)


heuu je sais pas avec quel shell tu arrives à faire ça, mais en bash; il faut utiliser expr ou gawk pour évaluer els expressions arithmétiques
Pour les calcul simples, expr suffit :

deux=`expr $dix - $huit`


 
sinon, c'est clair qu'il faut d'abord tester le nombre d'arguments passés !


Message édité par bobuse le 18-02-2004 à 09:17:48
Reply

Marsh Posté le 18-02-2004 à 09:43:29    

Pour ton test il faut que tu utilises des guillemets pour encadrer la variable à substituer :


if [ "$1" == "" ]||[ "$2" == "" ]||[ "$3" == "" ]||[ "$4" == "" ]||[ $5 == "" ]  
then


Une autre méthode pour tester si une variable est vide est l'opérateur éz:


if [ -z "$1" -o -z "$2" -o -z "$3" -o -z "$4" -o -z "$5" ]
then


 
 
Pour ton calcul, si tu utilise 'bash' ou 'ksh' il faut utiliser les doubles parentheses:


(( deux = dix - huit ))
echo $((huit+deux))


 
Dans le cas ou tu utilise 'sh', il te faut passer par 'expr' (ce n'est pas la seule méthode, tu peux aussi utiliser 'bc' ou 'awk')


deux=`expr $dix - $huit`


---------------
Jean Pierre.
Reply

Marsh Posté le 18-02-2004 à 10:08:34    

merci a vous j'ai réussit ce que je voulais :)

Reply

Marsh Posté le 18-02-2004 à 13:23:58    

bobuse>oups petit oubli... (on va dire que c t pcqu'il était tard...):D

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed