The UNIX and Linux Forums  
Bonjour et bienvenu par les États-Unis à la UNIX et Linux Forums! Merci de votre visite et vous joindre à notre communauté mondiale.

Go Back   Les systèmes UNIX et Linux Forums > Top Forums > UNIX pour les nuls Questions et réponses
.
google unix.com



UNIX pour les nuls Questions et réponses Si vous ne savez pas où poster un UNIX ou Linux question, post it here. Tous les systèmes UNIX et Linux, débutants bienvenus!

Plus d'UNIX et Linux Forum Sujets Vous trouverez peut-être utile
Fil Thread Starter Forum Réponses Last Post
Comment faire pour donner deux conditions du SI ..? RRVARMA De programmation et de script Shell 6 04-25-2008 10:33 AM
ou réduire les conditions hitmansilentass De programmation et de script Shell 8 05-03-2007 06:27 PM
plusieurs conditions si / alors grandtheftander UNIX pour les nuls Questions et réponses 4 07-21-2006 02:58 PM
si avec deux conditions cin2000 De programmation et de script Shell 1 01-23-2006 03:21 PM
si avec deux conditions-e, & & Yongho De programmation et de script Shell 16 06-14-2005 05:46 PM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Recherche sur ce Thread Rate Thread Modes d'affichage
  #1 (permalink)  
Old 07-28-2008
Borobudur borobudur is offline
Registered User
  
 

Date d'inscription: juillet 2008
Lieu: Genève, Suisse
Posts: 23
Deux conditions dans un if

Je suis totalement nouveau avec la programmation bash, et je ne comprends pas comment mettre deux conditions dans un if. Mon code ressemble à ceci:
Code:
h=`date +%k`
if [ [ $((h>9)) ] && [ $((h<21)) ] ]; then
h est de 10 $, mais je ne suis pas dans mon if. Quel est le problème ici?
  #2 (permalink)  
Old 07-28-2008
ère era is offline Forum Advisor  
Inutile de Herder Cats (en congé sabbatique)
  
 

Join Date: Mar 2008
Location: / il / est / que / bin / sh
Messages: 3652
La coque a une étrange série de syntaxe alternatives pour conditionnels.

Le [n'est pas un délimiteur, mais le nom d'une commande. La façon de l'utiliser pour de multiples expressions, c'est comme ceci:

Code:
if [ "$h" -gt 9 ] && [ "$h" -lt 21 ]; then
  ...
fi
Un peu plus récent (qui est, post-1979 ou alors ...) la syntaxe est

Code:
if [ "$h" -gt 9 -a "$h" -lt 21 ]; then
  ...
fi
Le $((...)) syntaxe est beaucoup plus récente, et présente une bonne arithmétique (y compris les> et <les opérateurs), mais n'est pas directement utilisable comme une condition. Il élargit simplement à 0 pour faux et 1 pour vrai. Mais bien sûr, vous pouvez mélanger et assortir:

Code:
if [ $((h > 9 && h < 21)) == 1 ]; then
  ...
fi
Enfin, il est le [[... ]] Conditionnel, ce qui est probablement ce que vous êtes après:

Code:
if [[ $h > 9 ]] && [[ $h < 21 ]]; then
  ...
fi
Les personnages qui composent la [[délimiteur ne peuvent pas être séparés par des blancs (à ma connaissance).
  #3 (permalink)  
Old 07-28-2008
krishmaths krishmaths is offline
Registered User
  
 

Join Date: Sep 2006
Lieu: Mysore, en Inde
Messages: 191
Essayez ceci:

Code:
if [ $h -gt 9 -a $h -lt 21 ]; then
  #4 (permalink)  
Old 07-28-2008
Borobudur borobudur is offline
Registered User
  
 

Date d'inscription: juillet 2008
Lieu: Genève, Suisse
Posts: 23
Oh boy! Je crois que je suis aux jeunes pour cela. Je suis de la génération Java, bash semble être assez compliqué.

Ces deux semblent fonctionner. Est-ce vraiment la même chose?

Code:
if [ $h -gt 9 -a $h -lt 21 ]; then
Code:
if [ "$h" -gt 9 ] && [ "$h" -lt 21 ]; then
  #5 (permalink)  
Old 07-28-2008
ère era is offline Forum Advisor  
Inutile de Herder Cats (en congé sabbatique)
  
 

Join Date: Mar 2008
Location: / il / est / que / bin / sh
Messages: 3652
Les guillemets sont principalement pour la sécurité (bonne habitude dans le cas $ h finit contenant une chaîne vide, par erreur, par exemple) et, en théorie, le & & variante pourrait créer deux externes, un processus où ne ferait que créer un. (C'est parce que la théorie [est probablement à l'interne dans les réservoirs modernes, il n'est donc pas en cause externe.)

Shell scripts ne sont pas analysées plus, la syntaxe est peu plus que dans beaucoup d'autres langages de script, ce qui crée quelques complications, mais aussi contribue à rendre la coque extrêmement polyvalent. L'absence de standard, built-in des opérateurs arithmétiques, dès le départ, est une autre source de complexité dans cette affaire. POSIX tente de corriger certaines de ces questions, mais historiquement, les différents shells ont mis au point différentes extensions qui ont alors créé, pour ainsi dire, encore plus de façons différentes à la peau d'un chat.
  #6 (permalink)  
Old 07-28-2008
Borobudur borobudur is offline
Registered User
  
 

Date d'inscription: juillet 2008
Lieu: Genève, Suisse
Posts: 23
Merci les gars pour votre aide!
Closed Thread

Bookmarks

Tags
si les conditions de déclaration

« doute. cshrc | sed »
Thread Tools Recherche sur ce Thread
Recherche sur ce Thread:

Recherche avancée
Modes d'affichage Rate this thread
Rate this thread:

Règles de messages
Tu mai pas de nouvelles discussions: nonoui
Tu mai pas envoyer des réponses:
Tu mai pas envoyer des pièces jointes
Tu mai pas modifier vos messages

BB code est Sur
Smilies sont Sur
[IMG] code est Sur
Le code HTML est Hors tension
Trackbacks sont Sur
Pingbacks sont Sur
Refbacks sont Sur




Toutes les heures sont au format GMT -4. Le temps est maintenant 05:37 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traductions Langue Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
Les systèmes UNIX et Linux Forums Content Copyright © 1993-2009. Tous droits Reserved.Ad de gestion par RedTyger

Content Relevant URLs par vBSEO 3.2.0