Toon posts:

[ksh] if statement in case

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hieronder het stukje code waar het over gaat. Als ik den boel oproep met:
./project.ksh -m '/dev /home/' -X 'bleih'

Dan print em mijn help functie af met net daarvoor de error:
./project.ksh[75]: [[monitor=monitor]]: not found

Kzit met de handen in de haren, in men referenties staan dat er spaties moeten na [[ en voor ]], maar dan runt men script totaal niet. (]] unexpected) Wat is hier mis?

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
while getopts "m:cX:f:" opts; do
        case "$opts" in
                m) mode="monitor"; monDir=$OPTARG;;
                c) mode="compare";;
                X) if [[$mode="monitor"]]; then
                        xVal=$OPTARG
                   else
                        printHelp
                   fi;;
                f) if [[$mode="compare"]]; then
                        fVal=$OPTARG
                   else
                        printHelp
                   fi;;
                \?) printHelp;;
        esac
done
if (($OPTIND==1)); then
        printHelp
fi;

  • benoni
  • Registratie: November 2003
  • Niet online
Nou script ik zelf helemaal niet in ksh, maar bedoel je niet '$mode=="monitor"' (vergelijken) in plaats van '$mode="monitor"' (gelijkstellen aan).

Verwijderd

Topicstarter
in ksh is het wel degelijk 1 = teken.

Maar ik heb het ondertussen na lang zoeken en vragen gevonden:

[ "$mode" = "monitor" ] Dat moest het zijn.

Nu kan ik verder werken aan men scriptje :)

  • benoni
  • Registratie: November 2003
  • Niet online
Je wordt wel op het verkeerde been gezet als in de foutmelding de vergelijking netjes wordt geevalueerd naar '[[monitor=monitor]]'... ach ja zoiets geeft 'n scripttaal karakter...