Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.

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

Alles rund um die verschiedenen Konsolen und shells sowie die Programmierung unter Linux

Moderator: Moderatoren

Antworten
Rumak18
Member
Member
Beiträge: 181
Registriert: 18. Jan 2005, 19:36
Wohnort: Regensburg

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

Beitrag von Rumak18 » 7. Nov 2019, 14:56

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"?
Ubuntu 18.04.3

Werbung:
Benutzeravatar
framp
Moderator
Moderator
Beiträge: 4305
Registriert: 6. Jun 2004, 20:57
Wohnort: bei Stuttgart
Kontaktdaten:

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

Beitrag von framp » 7. Nov 2019, 15:18

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.

abgdf
Guru
Guru
Beiträge: 3218
Registriert: 13. Apr 2004, 21:15

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

Beitrag von abgdf » 7. Nov 2019, 15:45

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.)

Rumak18
Member
Member
Beiträge: 181
Registriert: 18. Jan 2005, 19:36
Wohnort: Regensburg

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

Beitrag von Rumak18 » 8. Nov 2019, 09:31

Hi Leute,
vielen lieben Dank für euere Erklärungen! Mehr braucht es nicht. Danke auch für die LInks!
Ubuntu 18.04.3

Benutzeravatar
framp
Moderator
Moderator
Beiträge: 4305
Registriert: 6. Jun 2004, 20:57
Wohnort: bei Stuttgart
Kontaktdaten:

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

Beitrag von framp » 8. Nov 2019, 10:28

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 != ;)

abgdf
Guru
Guru
Beiträge: 3218
Registriert: 13. Apr 2004, 21:15

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

Beitrag von abgdf » 8. Nov 2019, 15:19

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:

Antworten