Entfernen Sie Letzte argument aus der Argumentliste, der shell-script (bash)

Diese Frage betrifft ein bash-Skript, das im automator unter osx. Ich bin mit automator-Aktionen und-filter eine Reihe von Datei-Referenzen aus dem finder. Dann habe ich anfügen, dass die Liste die Namen der übergeordneten Ordner auch über eine automator-Aktion. Automator speist dann diese Argumente zu einer Aktion namens "run shell script". Ich bin nicht sicher, genau, wie automator startet das Skript, aber die argument-Liste sieht wie folgt aus, wenn echo mit: echo "$@"

/Volumes/G-Raid/Online/WAV_TEST/Testbok 50/01/01000 43-001.wav /Volumes/G-Raid/Online/WAV_TEST/Testbok 50/02/02000 43-002.wav /Volumes/G-Raid/Online/WAV_TEST/Testbok 50/03/03000 43-003.wav /Volumes/G-Raid/Online/WAV_TEST/Testbok 50

In diesem Fall Weg zu 3 Dateien und ein Ordner.

In das shell-Skript starte ich eine Anwendung namens ripcheckc* mit den args übergeben von automator minus das Letzte argument(den Ordner) in der Liste.

Ich dieses entfernen das Letzte argument:

_args=( "$@" )
unset _args[${#_args[@]}-1]

Und das ist echo $_args:

/Volumes/G-Raid/Online/WAV_TEST/Testbok 50/01/01000 43-001.wav /Volumes/G-Raid/Online/WAV_TEST/Testbok 50/02/02000 43-002.wav /Volumes/G-Raid/Online/WAV_TEST/Testbok 50/03/03000 43-003.wav

Gleiche wie vorher, aber ohne den Ordner.

Nun, wenn ich ripcheckc mit "$@" als argument, es funktioniert (aber scheitert später auf, weil der Letzte Weg, der in der argument-Liste), Wenn ich ${_args[@]} die Anwendung einfach Abbrechen, schweigend. Wenn ich echo $@ und _args die Ausgabe sieht identisch, außer für das Letzte argument.

Meine Frage ist - was ist der Unterschied zwischen $@ und $_args, dass die erste gültige Eingabe und die zweite nicht?

*Die Anwendung ist ripcheckc

Ich hoffe, dass meine Frage Sinn macht.

EDIT: Gelöst.

Ich löste es durch die Verwendung von doppelten Anführungszeichen. Wie diese: ripcheckc "${_args[@]}".

InformationsquelleAutor Nordanfors | 2013-12-05

Schreibe einen Kommentar