Gibt es eine Möglichkeit, "Fehler: Befehlszeile zu lang" zu umgehen?

Ich verwende eine Befehlszeilensoftware, für die ich viele Argumente eingeben muss. Etwas wie

./exec -A argA -B argB -C argC ...

Es gibt so viele Argumente, dass ich die Fehlermeldung bekomme

Error: Command line too long (302110 >= 130592)

Eine Lösung wäre, die Software so zu modifizieren, dass sie Argumente aus einer Datei liest. Allerdings habe ich keinen Zugriff auf den Quellcode.

Gibt es eine Möglichkeit, dieses Problem zu umgehen?


FYI, ich bin an Mac OS X 10.11.3und benutzeTerminal 2.6.1 (361.1)

getconf ARG_MAX-die maximal vom Kernel erlaubten Zeichen.
Interessanterweise ist getconf ARG_MAXdie Rendite 262144fast doppelt so hoch wie 130592(aber immer noch niedriger als 302110 ).

Antworten (1)

Setzen Sie die Argumente in eine Datei wie -A argA -B argB -C argC …(ohne die Binärdatei) und führen Sie dann Folgendes aus:

cat /path/to/file | xargs ./exec
Vielen Dank für Ihre Antwort. Ich hatte einige Probleme bei der Untersuchung der Anwendung Ihrer Lösung auf mein spezielles Problem (obwohl das super einfach klingt), und deshalb habe ich diese Frage gestellt , bei der die erste Antwort zu sagen scheint, dass dies cat /path/to/file | xargs ./execsowieso keine Lösung sein kann.