mein Skript scheint nicht einmal zu arbeiten zugreifen, obwohl ich einen Exit-Status von 0kann nicht Befehlszeilenargumente aus dem Inneren einer Funktion
Es bekommen arbeitete, bis ich es eine Funktion mit dem
makedrivetree()
{
}
gemacht
Syntax.
Wenn Sie das entfernen und alles zwischen den while
und done
halten, funktioniert es gut.
Ich habe es gespeichert in meinem ~/bin-Ordner als makedrivetree
Hier ist die volle Funktion:
#!/usr/bin/env bash
# a script to write the contents of a directory in tree form and save it to a .txt file
### CONSTANTS
DATE="$(date +%Y%m%d)"
### FUNCTIONS
makedrivetree()
{
while [ "${*}" != "" ] ; do
#set $DRIVE as the first arugment sent to script
DRIVE="${1}"
#set $OUTPUT
OUTPUT="/Users/$USER/Desktop/$(basename "${DRIVE}")_contents_"${DATE}".txt"
#run tree
tree -I "*.dpx" --si --du -U -o "${OUTPUT}" "${DRIVE}"
#check $? for errors
if [ "$?" -eq "0" ] ; then
echo 'done. moving to next drive.'
else
echo 'error'
fi
shift
done
}
#call the function(s)
makedrivetree
echo 'makedrivetree exited with status' $?
exit
Sie keine Parameter an die Funktion übergeben, das ist wahrscheinlich das Problem. – Aaron
hi @Aaron können Sie eine Reparatur erarbeiten oder vorschlagen? Vielen Dank! – Bleakley
Oh, ich verstehe. Ich muss etwas wie 'makedrivetree $ @' machen, wenn ich die Funktion aufruft. – Bleakley