ubuntuusers.de

Für diese Funktion musst du eingeloggt sein.

Funktion eines Skripts

Status: Gelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

foxiproxy

Anmeldungsdatum:
16. Oktober 2009

Beiträge: 227

Hallo zusammen. Ich habe hier ein Skript vor mir liegen, von dem ich gerne die Funktion herausfinden würde. Und dabei macht mir der erste Teil sofort die größten Sorgen. Ich poste erstmal den Anfang:

1
2
3
4
5
#!/bin/bash

[ $# -eq 0 ] && directories='pwd' || directories=$@

...

Jetzt meine Frage: Was bewirkt diese Zeile? also ich weiß, das im ersten Teil geprüft wird, ob die Anzahl der Parameter gleich Null ist. Wird im zweiten Teil das Arbeitsverzeichnis der Variable directories zugewiesen? Was bringt die Zuweisung im letzten Teil? Es wurde doch vorher schon abgefragt, ob die Anzahl der Parameter Null ist. Und was bewirken die Verknüpfungen && und ||? UND und ODER machen für mich keinen Sinn.

Ich hoffe mal, hier kann jemand was mit der einen Zeile anfangen...

mfg foxiproxy

The-Compiler Team-Icon

Avatar von The-Compiler

Anmeldungsdatum:
21. April 2006

Beiträge: 2640

Wohnort: Winterthur, Schweiz

Hilfe, das Skript macht mir jetzt schon Angst o_O

Falls die Anzahl der Parameter 0 ist, wird der Variable directories den Textwert pwd zugewiesen (ich nehme mal an, diese Zeichen sollten backticks, also ` sein, nicht einfache Anführungszeichen, also ', dann machts auch Sinn, und würde das tun, was du vorschlägst)

Falls die Anzahl der übergebenen Parameter nicht 0 ist, wird der Variable directories der Wert aller Parameter zugewiesen, getrennt durch Leerzeichen (aber das $@ ist nicht mit " umgeben, also würde das ganze kaputtgehen sobald ein Verzeichnisname ein Leerzeichen enthalten würde.

Flo

foxiproxy

(Themenstarter)

Anmeldungsdatum:
16. Oktober 2009

Beiträge: 227

ach so einfach ist das 😀 ja das sollen backticks sein, klar aber das ganze hätte man doch auch schön durch nen if machen können, dann wärs auch lesbar gewesen, oder? schonmal danke für die perfekte Hilfe 😉

Hello_World

Anmeldungsdatum:
13. Juni 2006

Beiträge: 3620

foxiproxy schrieb:

ach so einfach ist das 😀 ja das sollen backticks sein, klar aber das ganze hätte man doch auch schön durch nen if machen können, dann wärs auch lesbar gewesen, oder?

Ja.

schonmal danke für die perfekte Hilfe 😉

Sie war insofern nicht ganz perfekt, als " um $@ auch nicht geholfen hätten. In der Bourne-Shell ist $@ das einzige Array und kann daher gar nicht in einer Variablen gespeichert werden. In der bash kann man sich auch eigene Arrays definieren, die Syntax dafür ist directories=("$@").

foxiproxy

(Themenstarter)

Anmeldungsdatum:
16. Oktober 2009

Beiträge: 227

achso, alles klar ☺ ich markiere das hier mal als erledigt.

danke nochmal

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17604

Wohnort: Berlin

foxiproxy schrieb:

aber das ganze hätte man doch auch schön durch nen if machen können, dann wärs auch lesbar gewesen, oder?

Wenn man die kurzschließenden UND und ODER kennt, && und ||, dann ist es auch lesbar, und wenn man if-then-else nicht kennt, dann ist es auch mit if nicht lesbar. ☺

Antworten |