Go Back   UNIX og Linux Forums > Top Forums > UNIX for Dummies Spørsmål og svar
.
Google Site



UNIX for Dummies Spørsmål og svar Hvis du er usikker på hvor du skal legge inn en UNIX-eller Linux-spørsmålet, legger den her. Alle UNIX og Linux newbies velkommen!

Closed Thread
English Japanese Spanish French German Portuguese Italian Powered by Powered by Google
 
Thread Tools Søk i denne tråden Rate Thread Visningsmoduser
  #1 (permalink)  
Old 07-28-2008
Registrert bruker
 

Bli Dato: juli 2008
Sted: Geneve, Sveits
Innlegg: 23
To forhold i en om uttalelse

Jeg er helt ny med bash-programmering og jeg får ikke det hvor å putte to forhold i en hvis setningen. Min koden ser slik ut:

Code:
h=`date +%k`
if [ [ $((h>9)) ] && [ $((h<21)) ] ]; then

$ h er 10, men jeg får ikke i meg hvis setningen. Hva er galt her?
Sponsede lenker
  #2 (permalink)  
Old 07-28-2008
æra era is offline Forum Advisor  
Herder av Useless Cats (På Sabbatical)
 

Bli Date: Mar 2008
Sted: / det / er / bare / bin / sh
Innlegg: 3652
Skallet har en uhyggelig sett av syntaks alternativer for conditionals.

Det [er ikke en tradisjonell skilletegn, men navnet på en kommando. Den måten å bruke det for flere uttrykk er slik:


Code:
if [ "$h" -gt 9 ] && [ "$h" -lt 21 ]; then
  ...
fi

En litt nyere (det vil si etter 1979 eller så ...) syntaks er


Code:
if [ "$h" -gt 9 -a "$h" -lt 21 ]; then
  ...
fi

Den $((...)) syntaksen er mye nyere, og introduserer riktig aritmetikk (inkludert> og <operatører), men kan ikke brukes direkte som en betingelse. Det utvider bare til 0 for falsk og 1 for sant. Men selvfølgelig kan du mikse og matche:


Code:
if [ $((h > 9 && h < 21)) == 1 ]; then
  ...
fi

Endelig er det [[... ]] Betinget, som sannsynligvis er det du er ute etter:


Code:
if [[ $h > 9 ]] && [[ $h < 21 ]]; then
  ...
fi

Tegnene som utgjør [[skilletegnet ikke kan skilles ved mellomrom (den beste av min kunnskap).
  #3 (permalink)  
Old 07-28-2008
Registrert bruker
 

Bli Dato: Sep 2006
Beliggenhet: Mysore, India
Innlegg: 191
Prøv dette:


Code:
if [ $h -gt 9 -a $h -lt 21 ]; then

  #4 (permalink)  
Old 07-28-2008
Registrert bruker
 

Bli Dato: juli 2008
Sted: Geneve, Sveits
Innlegg: 23
Oh boy! Jeg tror jeg unge for denne. Jeg er fra Java generasjon synes bash å være ganske vanskelig.

Disse to ser ut til å fungere. Er det egentlig det samme?


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
æra era is offline Forum Advisor  
Herder av Useless Cats (På Sabbatical)
 

Bli Date: Mar 2008
Sted: / det / er / bare / bin / sh
Innlegg: 3652
Den doble anførselstegn er hovedsakelig for sikkerhet (god vane i tilfelle $ h ender opp som inneholder en tom streng ved en feiltakelse, for eksempel), og i teorien, i & & varianten kunne lage to eksterne prosesser der-en bare ville opprette en. (It's teori fordi [trolig håndteres internt i moderns skjell, så det er ingen ytre prosess involvert.)

Shell skript er ikke analysert mye, er syntaksen grunnere enn i mange andre skriptspråk og dette skaper en del komplikasjoner, men også bidrar til å gjøre skallet ekstremt allsidig. Mangelen på standard innebygd aritmetiske operatører helt fra starten er en annen kilde til kompleksiteten i dette tilfellet. POSIX forsøk på å løse noen av problemene, men historisk har forskjellige skallene utviklet forskjellige utvidelser som har da skapt, som det var, for enda flere forskjellige måter å flå en katt.
  #6 (permalink)  
Old 07-28-2008
Registrert bruker
 

Bli Dato: juli 2008
Sted: Geneve, Sveits
Innlegg: 23
Takk fyrene for hjelpen!
Sponsede lenker
Closed Thread

Hugseliste

Tags
vilkår om uttalelse

Thread Tools Søk i denne tråden
Søk i denne tråden:

Avansert søk
Visningsmoduser Ranger denne tråden
Ranger denne tråden:

Innleggsaktivitet Regler
Du kanskje ikke poste nye tråder
Du kanskje ikke poste svar
Du kanskje ikke post vedlegg
Du kanskje ikke redigere innleggene dine

BB-kode er
Smilefjes er
[IMG] koden
HTML-koden Av
Pingbacks er
Refbacks er Av


Mer UNIX og Linux Forum Emner Du kan finne nyttig
Tråd Tråd startet Forum Svar Siste innlegg
Hvordan Giv to forholdene i IF statement ..? RRVARMA Shell programmering og Skripting 6 04-25-2008 10:33
redusere eller betingelser hitmansilentass Shell programmering og Skripting 8 05-03-2007 06:27
flere forhold hvis / deretter grandtheftander UNIX for Dummies Spørsmål og svar 4 07-21-2006 02:58
hvis setningen med to betingelser cin2000 Shell programmering og Skripting 1 01-23-2006 03:21
hvis setningen med to vilkår-e, & & yongho Shell programmering og Skripting 16 06-14-2005 05:46



Alle klokkeslett er GMT -4. Nå er klokken 10:19.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Language Translations Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX og Linux Forums Content Copyright © 1993-2010. All Rights Reserved.Ad Management by RedTyger

Content Relevant nettadresser av vBSEO 3.2.0