2016-09-15 3 views
0

Ich habe eine CLI, die ein Bash-Skript generiert. Wie kann ich es sofort auswerten ohne auf eine .sh Datei umzuleiten?Bash - Wie man ein Skript ausführt, das von einem anderen Skript ausgegeben wird

Beispiel ist folgendes zu ändern:

~: toolWhichGeneratesScript > tmp.sh 
~: chmod +x tmp.sh 
~: ./tmp.sh 

zu so etwas wie:

~: toolWhichGeneratesScript | evaluate 
+0

Vielen Dank für die sehr schnelle Antworten. Peinlich, dass ich nicht daran gedacht habe! Wessen Antwort sollte ich außer ??? –

+0

Ich würde die von @ thatotherguy vorgeschlagene akzeptieren, weil es die flexibelste Lösung ist, es sei denn, Ihr 'toolWhichGeneratesScript' könnte ein * sehr * langes Skript erstellen, in welchem ​​Fall die anderen sicherer sind. – user1934428

Antwort

2

Sie in Befehle weitergeben können mit bash -c (oder sh -c) auszuführen:

bash -c "$(toolWhichGeneratesScript)" 
-c  If the -c option is present, then commands 
      are read from the first non-option argument 
      command_string. If there are arguments 
      after the command_string, they are assigned 
      to the positional parameters, starting with 
      $0. 

Im Gegensatz zur Verrohrung der Shell bleibt die Stddin frei für die Interaktion mit Eingabeaufforderungen und Programmen, die das Skript ausführt.

1

Die Shell liest seine Skript aus der Standardeingabe:

toolWhichGeneratesScript | sh 

(In der Tat, eine interaktive Shell macht das gleiche, es ist die Standardeingabe geschieht nur ein Terminal sein.)

Hinweis, die Sie benötigen zu wissen, welche Shell zu verwenden; Wenn Ihr Tool bash Erweiterungen ausgibt, müssen Sie es an bash übergeben. Wenn das generierte Skript selbst aus der Standardeingabe lesen muss, haben Sie ein kleines Problem.

0

Versuchen Sie Folgendes: toolWhichGeneratesScript | Bash

Verwandte Themen