回答:
あなたはこれを自分で解決したようですが、次のものを使用できます:
$(command parameter1 parameter2)
編集の編集:以下は多少間違っていますが、サブシェルでコマンドを実行しますが、環境変数は引き続き使用できることがわかります。誤解を招く人々のために申し訳ありません...
編集:サブシェルで実行され、エクスポートされていない環境変数は使用されません。同じシェルでコマンドを実行する場合は、以下を使用する必要があります。
eval $(command parameter1 parameter2)
別の答えは、bash自体をパイプ処理することです。
echo 'uname -a' | bash
これはサブシェルでも実行され、同じシェルで実行するには、次のものが必要です。
echo 'uname -a' | bash -c
ちなみに、$()構文の代わりにバックティックを使用することもできますが、お勧めしません。
eval
ここで使用する理由がわかりません。理由があれば説明してください。(3)最後の例( -c
)は完全に間違っています。
これを使って:
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
$(commandlineA param1 param2)
printf '\143\144\040\057\n' | bash
コマンドは新しい独立した(そして一時的な)シェルプロセスで実行されるため、最終的には何も行われません。対照的に、$(printf '\143\144\040\057\n')
現在のアクティブな対話型シェルでディレクトリを変更します。