Seite 1 von 1

IF Abfrage mit Abfrage "-?" ... wofür steht das?

Verfasst: 7. Nov 2019, 14:56
von Rumak18
Hallo,
ich habe hier ein Script, dass eine READ Eingabe mit der folgenden Abfrage prüft:

Code: Alles auswählen

if [ "$FTPUSER" = "-?" ] || [ "$#" -ne 5 ] 
then....
wofür steht das "-?" und "$#" und wo kann man so was nachlesen? Ich finde dazu nicht wirklich was Konkretes. Haben diese "Optionen" auch einen bestimmten Namen? Gibt es irgendwo eine Dokumentation zu all diesen "Optionen"?

Re: IF Abfrage mit Abfrage "-?" ... wofür steht das?

Verfasst: 7. Nov 2019, 15:18
von framp
Das "-?" scheint eine erlaubte Aufrufoption des Scripts zu sein. Dadurch wird sicherlich der Hilfetext des Scripts angezeigt. Oft wird auch "-h" oder "--help" als Option fuer Hilfe genommen.
$# ist die Zahl der Parameter die beim Aufruf mitgegeben wurden. Es wird hier also geprüft ob nicht 5 Parameter mitgegeben wurden und dann auch der Hilfetext ausgegeben. D.h. das Script verlangt immer 5 Parameter und gibt sonst immer den Hilfetext aus wo alle Parameter beschrieben sind.

Es gibt eine sehr ausfuehrlich man page zu bash. Aber auch sonst findet man extrem viel im netz wenn man nach bash und z.B. "$#" sucht. Ich habe da z.B. https://askubuntu.com/questions/939620/ ... an-in-bash gefunden.

Re: IF Abfrage mit Abfrage "-?" ... wofür steht das?

Verfasst: 7. Nov 2019, 15:45
von abgdf
Rumak18 hat geschrieben:
7. Nov 2019, 14:56
wofür steht das "-?"
Das wird vom Skript abgefragt (vgl. Antwort von framp), hat also nichts direkt mit den Interna von bash zu tun.
Rumak18 hat geschrieben:
7. Nov 2019, 14:56
und "$#"
Das dagegen ist eine interne bash-Variable (vgl. Antwort von framp).
Rumak18 hat geschrieben:
7. Nov 2019, 14:56
und wo kann man so was nachlesen?
Das kann man hier:

https://www.tldp.org/LDP/abs/html/inter ... tml#APPREF

Diese Seite, der "Advanced Bash-Scripting Guide", ist wohl die größe Dokumentation zu bash. Wenn man es da nicht findet, findet man es wahrscheinlich nirgends.

Speziell bei "if"-Abfragen ist auch "man test" manchmal ganz nützlich.
(Ich komm' z.B. jedesmal durcheinander, daß bash "=" verwendet, um Strings zu vergleichen und "-eq", um Zahlen zu vergleichen, während Perl "==" für Zahlen verwendet, und "eq" für Strings. Aber das ist schon ein anderes Thema.)

Re: IF Abfrage mit Abfrage "-?" ... wofür steht das?

Verfasst: 8. Nov 2019, 09:31
von Rumak18
Hi Leute,
vielen lieben Dank für euere Erklärungen! Mehr braucht es nicht. Danke auch für die LInks!

Re: IF Abfrage mit Abfrage "-?" ... wofür steht das?

Verfasst: 8. Nov 2019, 10:28
von framp
abgdf hat geschrieben:
7. Nov 2019, 15:45
Speziell bei "if"-Abfragen ist auch "man test" manchmal ganz nützlich.
(Ich komm' z.B. jedesmal durcheinander, daß bash "=" verwendet, um Strings zu vergleichen und "-eq", um Zahlen zu vergleichen, während Perl "==" für Zahlen verwendet, und "eq" für Strings.
Aus diesem Grunde habe ich mir angewoehnt immer (( )) fuer numerische Tests und [[ ]] fuer Stringtests zu benutzen. Da stimmt immer == bzw != ;)

Re: IF Abfrage mit Abfrage "-?" ... wofür steht das?

Verfasst: 8. Nov 2019, 15:19
von abgdf
framp hat geschrieben:
8. Nov 2019, 10:28
Aus diesem Grunde habe ich mir angewoehnt immer (( )) fuer numerische Tests und [[ ]] fuer Stringtests zu benutzen. Da stimmt immer == bzw != ;)
Ah, dankeschön! Wieder was gelernt. :thumbs: