2015-01-04 9 views
6

Ich kann keine ähnliche Frage zu SO finden.Bash - Skript als Argument eines anderen Skripts übergeben

Wie kann ich ein Bash-Skript als Argument zu einem anderen Bash-Skript übergeben.

Zum Beispiel sagen wir, ich habe zwei Skripte, die jeweils eine Reihe von Parametern akzeptieren können, ich möchte ein Skript als Argument des anderen übergeben. Etwas wie:

./script1 (./script2 file1 file2) file3 

Im obigen Beispiel verschmilzt script2 file1 und file2 zusammen, und Echo eine neue Datei, aber das ist irrelevant für die Frage. Ich will nur wissen, wie ich script2 als Parameter übergeben kann, d. H. Die richtige Syntax.

Wenn dies nicht möglich ist, wäre jeder Hinweis angebracht, wie ich das Problem umgehen könnte.

+0

Wie wollen Sie das 'script2' verwenden, nachdem Sie es an' script1' übergeben haben? –

+0

Momentan bin ich mir nicht ganz sicher, ob das von mir verwendete 'script1 'nur den gesamten Inhalt der Parameter durchläuft. Aber ich bin nur daran interessiert herauszufinden, wie ich das Skript als Parameter übergeben kann, weil es für mich nicht funktioniert. – Bolboa

+2

Es ist mir immer noch nicht klar, was Sie erreichen wollen oder was es wirklich bedeutet, ein Skript als Parameter zu übergeben. Parameter sind nur Zeichenfolgen. Vermutlich möchten Sie 'script2' ausführen und die Dateinamen' file1' und 'file2' irgendwann weitergeben. Wäre es ausreichend, das Ergebnis dieser Aktion zu übergeben? –

Antwort

3

Wenn Sie wollen script1script2 als Argument übergeben es innerhalb der letzten auszuführen, setzen Sie einfach den folgenden Code innerhalb script1 und script1 wie folgt aufrufen:

./script1 "./script2 file1 file2" file3 # file4 file5 

-Code innerhalb script1:

$1 # here you're executing ./script2 file1 file2 
shift 
another_command "[email protected]" # do anything else with the rest of params (file3) 

Oder wenn Sie die Anzahl der params zu script2 kennen und es festgelegt ist, können Sie es auch tun, wie folgt:

./script1 ./script2 file1 file2 file3 # file4 file5 

-Code innerhalb script1:

"$1" "$2" "$3" 
shift 3 
another_command "[email protected]" # do anything else with the rest of params (file3) 
5

Wenn Sie das Ergebnis der Auswertung von script2 als Parameter übergeben möchten, verwenden Sie $(). Denken Sie daran, dass Sie es angeben müssen.

./script1 "$(./script2 file1 file2)" file3 
+7

Wobei _evaluation_ bedeutet, dass die Standardausgabe als einzelner Parameter erfasst wird. – kojiro

Verwandte Themen