ich habe ein kleines Problem beim Bashscripting. Hier ist aber anzumerken, dass ich leider hier wenig Erfahrung mitbringe. Ich bin als für jede Kritik dankbar. :( Die Suchfunktion und Google habe ich auch schon bemüht, jedoch waren meine Suchparameter wohl nicht gut genug. :oops:
Zu meinem Problem:
Ich habe ein eigenes Script: test.sh
An das übergebe ich mindestens drei Parameter. Die max. Parameteranzahl ist undefiniert und könnte unendlich sein. Nun sind die ersten beiden Parameter für andere zwecke bestimmt und interessieren uns nicht weiter. Parameter 3-x enthalten Dateinamen. Diese werden an einen Array übergeben und werden später in einen String eingelesen. Dieser wird dann an eine ZIP-Aufruf angehängt, um die übergebenen Dateien zu packen.
Der Aufruf:
Code: Select all
test.sh 11 blabla "hund.jpg" "katze.jpg" "maus.jpg"Hier ist nun der Knackpunkt an meinem Script.
Code: Select all
test.sh 11 blabla "hund 2.jpg" "katze 2.jpg" "maus 2.jpg"Auch ein Escapen nützt nichts:
Code: Select all
test.sh 11 blabla "hund 2.jpg" "katze 2.jpg" "maus 2.jpg"Ich bin mir ziemlicher sicher, dass es am fehlerhaften Zusammensetzen des Dateinamen Strings liegt. Aber mir ist da leider kein besserer Weg eingefallen. Auch mehrere Escapes usw. haben mich nicht auf den richtigen Weg geführt. Vielleicht hat jemand von euch einen Tipp, wie ich es besser machen kann. Ich finde leider keine kreative Idee, um das Problem zu lösen.
Vielen Dank für eure Hilfe und noch einen schönen Abend.
Code: Select all
declare -a DATEIEN
zip_str=
i=0
while [ "$1" ]; do
((i++))
if (( $i > 2))
then
DATEIEN[(($i-2))]="$1"
fi
shift
done
anzahl_dateien=$i
let "anzahl_dateien -=2"
for j in $(seq 1 $anzahl_dateien)
do
zip_str="${zip_str} ${DATEIEN[$j]}"
done
zip -r -z < /tmp/kommentar.txt ${zipname} ${zip_str}
