
Ich verwende Dolphin in einer KDE Plasma 5-Desktopumgebung. Hier habe ich ein Bash-Skript geschrieben, das genau EINE Datei verarbeiten kann, wenn ich eine Datei aus Dolphin ziehe und auf einem als „.desktop“ definierten Skript mit einem Symbol ablege, das dann beispielsweise ausgeführt wird /home/user/scripts/list_all_drags.sh %f
.
Das funktioniert mit so einer Datei. Nun möchte ich mehrere ausgewählte Dateien aus Dolphin in das Skript ziehen und das Skript soll seine Prozeduren für jeden Dateieintrag ausarbeiten. Das funktioniert allerdings nicht, obwohl ich %F
für mehrere Dateien statt %f
für eine einzelne Datei verwendet habe.
Was passiert, ist, dass mehrere Terminalfenster geöffnet werden, eines für jeden Dateieintrag. Was ich brauche, ist, dass der Code in EINEM Skript ausgeführt wird, für jeden abgelegten Dateieintrag, ohne mehrere Terminalfenster zu öffnen, außer dem ersten. Genau, die „Schleife“, um die Befehle mit den abgelegten Dateien zu starten oder auszuführen, ohne eine weitere Taste zu drücken.
Ich weiß nicht, wie ich mit dem %F
Parameterwert in meinem Skript umgehen soll.
Antwort1
Ich denke, ich habe die richtige Antwort gefunden, insbesondere wie man mit mehreren Parametern mit %F umgeht.
Zuerst wähle ich in einem Dateimanager meine Einträge (Dateien) aus. Dann ziehe ich alle markierten Dateien auf mein Skriptsymbol und lasse sie dort fallen. In diesem Skript, das mit "/home/user/scripts/myscript.sh %F" ausgeführt wird, gibt es eine Routine, die alle ausgewählten Dateieinträge auswertet.
Obwohl ich nicht sicher bin, wie viele Parameter (Dateien) dann massenhaft ausgewählt und ausgearbeitet werden könnten, hilft mir diese Routine hier, alle einzelnen Parameter größer als 0 (das sind meine ausgewählten, meine markierten Dateien) zusammenzuzählen:
while (( $# > 0 )) # or [ $# -gt 0 ] do echo "$1" shift done
Anstelle von „echo $1“ kann ich sagen
file = $1
und rufe dann meine Subroutine auf, in der ich mit $file arbeite
Besonderer Dank gilt diesem Beitrag: So handhaben Sie mehr als 10 Parameter in einer Shell