PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [bash] function und deren Rückgabe



bash_azubi
01-07-2004, 12:47
Hi,
tolles Forum muß ich schon sagen - gefällt mir richtig gut!

Ich habe hier ein kleines shellscript zu bauen, wobei ich Funktionen definieren möchte, um den Code nicht x mal zu tippen.
Dummerweise habe ich bisher kaum Doku zu Rückgabewerten gelesen.

Mein Code bisher:


# Wieviele Minuten sind heute schon verstrichen:
Zeit=$(echo $(date +%H)* 60 + $(date +%M) | bc)

function holen ()
{
# finde alle Dateien, die seit heute 0 Uhr geändert wurden:
Dateien=$( find $PFAD -type f -mmin -$Zeit )
}

# Jetzt hol mir die Dateien für den folgenden Pfad
PFAD=verzeichnis1/incoming
holen
echo -e "Es gibt folgende Dateien in $Pfad:\n$Dateien"

# Jetzt hol mir die Dateien für den folgenden Pfad
PFAD=verzeichnis2/incoming
holen
echo -e "Es gibt folgende Dateien in $Pfad:\n$Dateien"


In dem bash Prompt howto habe ich nichts über die Rückgabewerte finden können, ist das korrekt so, oder fange ich mir da durch evtl. Überschneidungen von globalen und lokalen Variablen Probleme ein? :eek:

Herzlichen Dank an alle, die mir helfen :)

SeeksTheMoon
01-07-2004, 13:26
http://tldp.org/LDP/abs/html/index.html hat je ein Kapitel über Funktionen und Rückgabewerte.
Mit $? kannst Du auf die Rückgabe zugreifen.

Am einfachsten wäre es bei Dir, wenn Du die Variable "Dateien" global machen würdest.

peschmae
01-07-2004, 16:25
Der Code ist Ok so - du musst halt selber gucken dass die Variablen sich nicht überschneiden (einfach das zuletzt zugewiesene zählt).

Rückgabewerte (also return x) sind eigentlich nur zur Erfolgsbestätigung gut - da darfst du nämlich nur Zahlen in einem recht kleinen Bereich (0-255? - keine Ahnung) zurückgeben, keine Zeichenketten.
Deshalb ist das - wenn man nicht so komische Stdout-Tricksereien macht - die einzige Methode um was aus ner Funktion zurückzugeben.

MfG Peschmä

bash_azubi
01-07-2004, 17:45
Danke für den Link und die Erklärungen. :cool:

Macht richtig Spaß zu scripten, geht ziemlich schnell :)