web-dev-qa-db-ja.com

Ubuntu:別のコマンドの出力を実行する

別のコマンドラインを出力するコマンドラインがあります。次に例を示します。

> commandlineA param1 param2
  commandlineB param1

与えられたパラメーターでcommandlineBを実行する単一のコマンドライン実行を希望します。

単一のコマンドラインを使用してそれを行う簡単な方法はありますか、または出力を変数に格納して実行する小さなbashファイルを実行する必要がありますか?

ありがとう

13
Lior Ohana

あなたはこれを自分で解決したようですが、次のものを使用できます:

$(command parameter1 parameter2)

Edit of edit:以下は多少間違っていますが、サブシェルでコマンドを実行しますが、環境変数は引き続き使用できることがわかります。誤解を招く人々のために申し訳ありません...

Edit:サブシェルで実行され、エクスポートされていない環境変数は使用されません。同じシェルでコマンドを実行する場合は、以下を使用する必要があります。

eval $(command parameter1 parameter2)

与えられた別の答えは、bash自体をパイプスルーすることです。

echo 'uname -a' | bash 

これはサブシェルでも実行され、同じシェルで実行するには、次のものが必要です。

echo 'uname -a' | bash -c

ちなみに、$()構文の代わりにバックティックを使用することもできますが、これは 非推奨 です。

16
Chris Sherlock

これを使って:

commandlineA param1 param2 | bash

例:

echo "uname -a" | bash

出力:

 Linux k1104 2.6.38-8-generic#42-Ubuntu SMP Mon Apr 11 03:31:50 UTC 2011 i686 i686 i386 GNU/Linux 
4
Cyrus