
Ich stoße bei der Verwendung eines Befehls in der Shell (in meinem Fall Bash) auf das Problem „Argumentliste zu lang“. Die meisten Vorschläge zur Umgehung dieses Problems schlagen die Verwendung von find
oder einer Variante vor, vorausgesetzt, dass es sich um eine lange Liste von Dateien handelt, die die Argumentlängenbeschränkung überschreitet.
In meinem Fall ist es jedoch keine Liste von Dateien, sondern eine Liste von Argumenten. Ich verwende die Audioverarbeitungssoftware sox
und muss so viele Befehlszeilenargumente verwenden können, wie ich möchte (abhängig von der Länge der eingegebenen Audiodatei). Eine Kurzversion eines gewünschten Befehls könnte beispielsweise folgendermaßen aussehen:
sox input.wav output.wav trim 0 1 gain 1 : trim 0 1 gain 2 : trim 0 1 gain 1
Aber statt nur drei Trim/Gain-Argumentpaaren möchte ich, dass es so lange weitergeht, wie ich möchte (stellen Sie sich also vor, dass es einfach weitergeht mit ) trim 0 1 gain X
.
Gibt es eine Möglichkeit, eine Funktion zu schreiben, die dies generiert, um die Argumentlängenbeschränkung zu umgehen? Ich habe einige Variationen ausprobiert, komme aber nicht dahinter.
Antwort1
Wenn eine spezifische Lösung sox
Ihren unmittelbaren Anforderungen entsprechen würde, kann ich der sox(1)
Manpage entnehmen, dass es dort eine Option gibt --effects-file
, mit der Sie alle Ihre Änderungen in einer Datei statt in Befehlszeilenargumenten angeben können.