Für diese Funktion musst du eingeloggt sein.
if Anweisung zum testen von $2
Status:
Ungelöst
|
Ubuntu-Version:
Ubuntu GNOME 14.04 (Trusty Tahr)
Antworten |
|
UnitedBlaze
Anmeldungsdatum: 30. Mai 2018
Beiträge: 28
|
Moin Moin,
ich möchte in meinem Shell Skript den Parameter $2 abfragen ob es sich um ein Zeichen A-Z,a-z,0-9 handelt.
Dies möchte ich mit eine If Anweisung lösen, bekomme es aber nicht in die Bedingung richtig rein.
Die If darf nur ausgeführt werden wenn wirklich nur EINS der Zeichen in $2 enthalten ist(nicht mehr nicht weniger). Kann mir da jemand weiterhelfen, bzw. zeigen wie meine Bedingung aussehen muss? MfG UnitedBlaze
|
|
Marc_BlackJack_Rintsch
Ehemalige
Anmeldungsdatum: 16. Juni 2006
Beiträge: 4735
|
| if [[ $2 =~ ^[0-9A-Za-z]$ ]]; then
echo 'match'
fi
|
|
|
UnitedBlaze
(Themenstarter)
Anmeldungsdatum: 30. Mai 2018
Beiträge: 28
|
Komischerweise funktioniert das nicht.
Also ich rufe mein skript wie folgt in der Kommandozeile auf ./meinskript.sh x y z Dabei wird in $1 das was bei x steht rein geschrieben.
Das was bei y in $2 und bei z in $3.
In meinem Skript findet nun eine Case Auswahl mit $1 statt, funktioniert auch.
Anschließend soll bei einer bestimmten case option nur dann etwas ausgeführt werden wenn $2 im oben genannten Wertebereich liegt.
wenn ich die if Anweisung aber wie vorgeschlagen Aufbaue und mein Skript dann ausführe, steht das da: ./meinskript.sh: [[: not found Warum? MfG UnitedBlaze
|
|
Marc_BlackJack_Rintsch
Ehemalige
Anmeldungsdatum: 16. Juni 2006
Beiträge: 4735
|
@UnitedBlaze: Ich ging davon aus das die Bash verwendet wird. Ansonsten würde ich eher case statt if hierfür verwenden.
|
|
rklm
Projektleitung
Anmeldungsdatum: 16. Oktober 2011
Beiträge: 13242
|
Es gibt noch das gute alte expr: | $ if expr "$2" : '[a-zA-Z0-9]$' >/dev/null; then echo ja; else echo nein; fi
ja
$ set -- aaa .
$ if expr "$2" : '[a-zA-Z0-9]$' >/dev/null; then echo ja; else echo nein; fi
nein
$ set -- aaa 9
$ if expr "$2" : '[a-zA-Z0-9]$' >/dev/null; then echo ja; else echo nein; fi
ja
$ set -- aaa 99
$ if expr "$2" : '[a-zA-Z0-9]$' >/dev/null; then echo ja; else echo nein; fi
nein
|
Das funktioniert übrigens auch in der sh. Und ansonsten das schon erwähnte case: 1
2
3
4
5
6
7
8
9
10
11
12 | $ set -- aaa b
$ case "$2" in [a-zA-Z0-9]) echo ja;; *) echo nein;; esac
ja
$ set -- aaa .
$ case "$2" in [a-zA-Z0-9]) echo ja;; *) echo nein;; esac
nein
$ set -- aaa 9
$ case "$2" in [a-zA-Z0-9]) echo ja;; *) echo nein;; esac
ja
$ set -- aaa 99
$ case "$2" in [a-zA-Z0-9]) echo ja;; *) echo nein;; esac
nein
|
|