• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

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

Rumak18

Member
Hallo,
ich habe hier ein Script, dass eine READ Eingabe mit der folgenden Abfrage prüft:

Code:
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"?
 

framp

Moderator
Teammitglied
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/what-does-mean-in-bash gefunden.
 

abgdf

Guru
Rumak18 schrieb:
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 schrieb:
Das dagegen ist eine interne bash-Variable (vgl. Antwort von framp).
Rumak18 schrieb:
und wo kann man so was nachlesen?
Das kann man hier:

https://www.tldp.org/LDP/abs/html/internalvariables.html#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.)
 
OP
R

Rumak18

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

framp

Moderator
Teammitglied
abgdf schrieb:
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 != ;)
 
Oben