2016-09-15 21 views
0

私はbashスクリプトを生成するCLIを持っています。 .shファイルにリダイレクトせずにすぐに評価するにはどうすればよいですか?Bash - 別のスクリプトから出力されるスクリプトを実行する方法

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

のようなものに:あなたはbash -c(またはsh -c)で実行するためのコマンドに渡すことができます

~: toolWhichGeneratesScript | evaluate 
+0

ありがとうございました。私はそれを考えなかったことを恥ずかしい!誰の答えが私を除いてはならないか??? –

+0

'toolWhichGeneratesScript'が*非常に*長いスクリプトを作成しない限り、最も柔軟な解決策であるため、@thatotherguyが提案するものを受け入れます。その場合、他のスクリプトはより安全です。 – user1934428

答えて

2

の例では、次のように変更することです

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. 

これは、シェルへのパイピングとは異なり、これにより、スクリプトが実行するプロンプトとプログラムとやりとりするためのstdinは自由になります。

1

シェルが標準入力からそのスクリプトを読み取ります

toolWhichGeneratesScript | sh 

(実際には、対話型シェルは、同じことを行い、それが標準入力だけで、端末であることを起こるのです。)あなたが必要

注意知ることシェルを使用する。あなたのツールがbashエクステンションを出力する場合は、それをbashにパイプする必要があります。また、生成されたスクリプト自体が標準入力から読み込む必要がある場合は、少し問題があります。

0

次のようにしてください:toolWhichGeneratesScript | bash

関連する問題