2017-10-07 1 views
0

ein Fall: Ich schrieb Skript auf tsch, die andere Skript auf Python aufrufen. Wenn ich Python-Skript von cmd aufrufen, ist es OK. Wenn ich Testskript auf tsch aufrufen dann bekomme ich Fehler: Liste Argument zu langeArgumentliste zu lang aus Shell-Skript

Ein anderer Fall:

git grep -e "alex" -- `git ls-files | grep -v 'bin'` 

ich auch Fehler angezeigt: Argument list too long. Was kann Problem und wie man es löst?

+0

Du fragst "was kann das Problem sein"? Nun, wahrscheinlich ist die Argumentliste zu lang, oder? Hast du seine Länge überprüft? Jede Schale hat Grenzen. – arkascha

+0

Wie kann ich es überprüfen? Wenn ich von der Befehlszeile aus laufe, habe ich kein Problem. @arkascha – Alex

+0

Nun, wie heißt es? Sie könnten die Argumentliste beispielsweise in eine Datei umleiten. – arkascha

Antwort

0

aktualisiert Antwort

Ich bin nicht vertraut mit den spezifischen git Befehle, die Sie verwenden, und Sie scheinen nicht vernünftig auf die Fragen in den Kommentaren entweder zu antworten. Ich denke, man wahrscheinlich so etwas wie diese, obwohl will:

git ls-files | grep -v 'bin' | xargs -L 128 git grep -e "alex" -- 

Original-Antwort

Der klassische Weg zu lösen „Fehler: Argument-Liste zu lang“ ist mit xargs. Es kann verwendet werden, um ein Skript, dessen Name Sie angeben, wiederholt aufzurufen, oder echo, wenn Sie kein Skript angeben, mit einer begrenzten Anzahl von Argumenten, bis alle Argumente verbraucht sind.

Also, stellen Sie sich vor, Sie haben eine Million Dateien in einem Verzeichnis, dann ls * wird fehlschlagen, aber eine einfache ls wird funktionieren. So können wir, dass in Gebrauch genommen mit:

ls | xargs -L 128 

die echo nennen wiederholt mit 128 Dateinamen in einer Zeit, bis alle Echos sind (weil wir nicht einen Dienstprogramm Namen vorsah).

So könnten Sie tun:

ls | xargs -L 128 yourScript.py 

Ihren Python-Skript mit 128 Dateinamen zu einer Zeit wiederholt zu nennen. Natürlich machst du etwas völlig anderes und inkompatibel mit dieser Technik, aber deine Antworten sind bisher nicht sehr hilfreich ...

+0

Wie kann ich in 'git grep command' integrieren? zB: git grep - 'git ls-files' @Mark Setchell – Alex

+0

Sie müssten unter Ihrer ursprünglichen Frage auf' edit' klicken und zeigen, wie Sie diesen Befehl ausführen, wie einige Beispiel-Ausgabezeilen aussehen und wie sie aussehen müssen dann bearbeitet werden. –

+0

Entschuldigung, ich kann nicht sehen, welchen Befehl Sie tatsächlich ausgeführt haben, noch welche Art von Ausgabe es erzeugt ... Ich denke, der 'grep -v bin' Teil funktioniert ok, also können wir das überspringen, also führen Sie' git grep -e " alex "- git ls-files'? Was produziert es? Tut mir leid, ich bin kein großer Benutzer von 'git'. –

Verwandte Themen