The UNIX and Linux Forums  

Go Back   UNIX og Linux Forums > Top Forums > UNIX for dummyer Spørgsmål & svar
.
google unix.com



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

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 Søg denne tråd Rate Thread Display Modes
  #1 (permalink)  
Old 07-28-2008
borobudur borobudur is offline
Registreret Bruger
  
 

Join Date: Jul 2008
Beliggenhed: Genève, Schweiz
Stillinger: 23
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?
  #2 (permalink)  
Old 07-28-2008
epoke era is offline Forum Advisor  
Herder af Useless Cats (On Sabbatical)
  
 

Join Date: Mar 2008
Location: / der / er / kun / bin / sh
Stillinger: 3652
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).
  #3 (permalink)  
Old 07-28-2008
krishmaths krishmaths is offline
Registreret Bruger
  
 

Join Date: Sep 2006
Beliggenhed: Mysore, Indien
Posts: 191
Prøv dette:


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

  #4 (permalink)  
Old 07-28-2008
borobudur borobudur is offline
Registreret Bruger
  
 

Join Date: Jul 2008
Beliggenhed: Genève, Schweiz
Stillinger: 23
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

  #5 (permalink)  
Old 07-28-2008
epoke era is offline Forum Advisor  
Herder af Useless Cats (On Sabbatical)
  
 

Join Date: Mar 2008
Location: / der / er / kun / bin / sh
Stillinger: 3652
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.
  #6 (permalink)  
Old 07-28-2008
borobudur borobudur is offline
Registreret Bruger
  
 

Join Date: Jul 2008
Beliggenhed: Genève, Schweiz
Stillinger: 23
Thank you guys for din hjælp!
Closed Thread

Bogmærker

Tags
betingelser, hvis erklæring

« tvivl. cshrc | sed »
Thread Tools Søg denne tråd
Søg denne tråd:

Avanceret søgning
Display Modes Bedøm denne tråd
Bedøm denne tråd:

Udstationering Regler
Du kan ikke post nye tråde
Du kan ikke post svar
Du kan ikke post vedhæftede filer
Du kan ikke redigere dine indlæg

BB-kode er
Smilies er
[IMG] koden er
HTML-koden er Slukket
Trackbacks er
Pingbacks er
Refbacks er




Alle tidspunkter er GMT -4. Den tid er nu 05:08 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Oversættelser Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX og Linux Forums Content Copyright © 1993-2009. Alle rettigheder Reserved.Ad Management ved RedTyger

Content Relevant webadresser ved vBSEO 3.2.0