![]() |
|
|
google unix.com
|
|||||||
| Forums | Registrer | Forum Regler | Links | Albums | FAQ | Members List | Kalender | Søgning | Dagens Stillinger | Mark Forums Read |
| UNIX for dummyer Spørgsmål & svar Hvis du ikke ved, hvor man skal sende en UNIX-eller Linux-spørgsmål, efter det her. Alle UNIX og Linux newbies velkommen! |
Mere UNIX og Linux Forum Emner du måske kan finde Helpful
|
||||
| Tråd | Thread Starter | Forum | Svar | Last Post |
| Sådan give to betingelser i IF erklæring ..?? | RRVARMA | Shell Programmering og Scripting | 6 | 04-25-2008 10:33 AM |
| reducere eller betingelser | hitmansilentass | Shell Programmering og Scripting | 8 | 05-03-2007 06:27 PM |
| flere betingelser i hvis / derefter | grandtheftander | UNIX for dummyer Spørgsmål & svar | 4 | 07-21-2006 02:58 PM |
| hvis erklæring med to betingelser | cin2000 | Shell Programmering og Scripting | 1 | 01-23-2006 03:21 PM |
| hvis erklæring med to betingelser-e, & & | yongho | Shell Programmering og Scripting | 16 | 06-14-2005 05:46 PM |
![]() |
|
|
LinkBack | Thread Tools | Søg denne tråd | Rate Thread | Display Modes |
|
|
|
||||
|
To betingelser i en hvis erklæring
Jeg er helt ny med bash programmering og jeg ikke får det, hvordan man sætte to betingelser i en if-sætning. Min kode ser sådan her ud: Code:
h=`date +%k` if [ [ $((h>9)) ] && [ $((h<21)) ] ]; then $ h er 10 men jeg kan ikke komme ind i min hvis erklæring. Hvad er der galt her? |
|
||||
|
Skallen har en uhyggelig sæt syntaks alternativer til conditionals. Det [er ikke en traditionel afgrænsningstegn, men navnet på en kommando. Den måde at bruge det til flere udtryk er sådan her: Code:
if [ "$h" -gt 9 ] && [ "$h" -lt 21 ]; then ... fi En lidt nyere (dvs, post-1979 eller deromkring ...) syntaks Code:
if [ "$h" -gt 9 -a "$h" -lt 21 ]; then ... fi Den $((...)) Syntaksen er meget nyere, og der indføres egentlig aritmetik (herunder> og <operatører), men kan ikke bruges direkte som en betingelse. Det simpelthen udvides til 0 for falsk og 1 for sand. Men selvfølgelig, kan du mikse og matche: Code:
if [ $((h > 9 && h < 21)) == 1 ]; then ... fi Endelig er der den [[... ]] Betingede, hvilket sandsynligvis er det du er ude efter: Code:
if [[ $h > 9 ]] && [[ $h < 21 ]]; then ... fi De tegn, der udgør [[afgrænsningstegnet ikke kan adskilles af blanke tegn (til min bedste overbevisning). |
|
||||
|
Oh boy! Jeg tror, jeg er for unge til dette. Jeg er fra Java generation, bash synes at være ganske vanskeligt. Disse to synes at arbejde. Er det virkelig den samme? Code:
if [ $h -gt 9 -a $h -lt 21 ]; then Code:
if [ "$h" -gt 9 ] && [ "$h" -lt 21 ]; then |
|
||||
|
Den dobbelte citationstegn er hovedsagelig til sikkerhed (god vane i tilfælde $ h ender med en tom streng ved en fejltagelse, for eksempel) og i teorien & & variant kunne skabe to eksterne processer, hvor-en kun vil oprette en. (Det er teori, fordi [formentlig håndteres internt i Nutiden tanke, så der er ingen ydre involveret proces.)
Shell-scripts er ikke parset meget, syntaksen er mere overfladisk end i mange andre script-sprog, og dette skaber nogle komplikationer, men også bidrager til at gøre tanken ekstremt alsidigt. Den manglende standard, indbygget regnetegn lige fra starten er en anden kilde til komplikationer i denne sag. POSIX forsøg på at løse nogle af de spørgsmål, men historisk set har forskellige skaller udviklet forskellige udvidelser, som har så skabt, som det var, at endnu flere forskellige måder hud en kat. |
![]() |
| Bogmærker |
| Tags |
| betingelser, hvis erklæring |
| Thread Tools | Søg denne tråd |
| Display Modes | Bedøm denne tråd |
|
|