|
|
|
|
Google Site
|
|||||||
| Forums | Registrer | Blogg | Man Pages | Forum Rules | Lenker | Album | FAQ | Brukere | Kalender | Søke | Dagens innlegg | Marker forumene som lest |
| 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! |
![]() |
|
|
Thread Tools | Søk i denne tråden | Rate Thread | Visningsmoduser |
|
|||
|
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 |
|
|
|
|||
|
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). |
|
|||
|
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 |
|
|||
|
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. |
|
|||
|
Takk fyrene for hjelpen!
|
| Sponsede lenker |
|
|
![]() |
| Hugseliste |
| Tags |
| vilkår om uttalelse |
| Thread Tools | Søk i denne tråden |
| Visningsmoduser | Ranger denne tråden |
|
|
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 |