Ich habe ein Skript s1
, das eine Liste von Zahlen ausgibt, die durch ',' getrennt sind, z 1,2,3,4
. Jetzt möchte ich diese Zahlen dem Skript s2
als Argumente geben, damit s2 auf jedem von ihnen ausgeführt wird und das Ergebnis in einer separaten Zeile ausgibt. Wenn zum Beispiel s2 Zahlen mit zwei multipliziert, ist dies das Ergebnis, nach dem ich suche:
2
4
6
8
Was ich gerade mache ist:
s1 | xargs -d "," | xargs -n1 s2
Aber ich habe das Gefühl, dass ich es so dumm mache! Meine Frage lautet also:
Was ist der richtige Weg, um es zu tun?
Mein Problem mit meiner Lösung ist, dass es xargs zweimal aufruft und zweimal über die Eingabe iteriert, was für meine Augen natürlich aufgrund der Leistung nicht vernünftig ist! Die Antwort xargs -d "," -n1
scheint nett zu sein, aber ich bin mir nicht sicher, ob sie nur einmal wiederholt wird. Wenn dies der Fall ist, überprüfen Sie dies bitte in Ihrer Antwort, und ich werde es akzeptieren. Übrigens würde ich Perl lieber nicht verwenden, da es immer noch zweimal iteriert und Perl auf vielen Systemen möglicherweise nicht vorhanden ist.
s1 | xargs -d "," -n1 s2