題 Ubuntu:運行另一個命令的輸出


我有命令行輸出不同的命令行,例如:

> commandlineA param1 param2
  commandlineB param1

我想有一個命令行執行,將使用給定的參數運行commandlineB。

有沒有簡單的方法可以使用單個命令行來執行此操作,還是需要運行一個小的bash文件,將輸出存儲在變量中然後運行它?

謝謝


7
2017-12-27 08:45


起源


搜索了很長一段時間,但我想我必須自己發一個問題.... $(commandlineA param1 param2)完成了這項工作。 - Lior Ohana


答案:


你似乎已經自己解決了這個問題,但你可以使用:

$(command parameter1 parameter2)

編輯:將在子shell中運行,不會使用任何未導出的環境變量。如果要在同一個shell中運行命令,則需要使用:

eval $(command parameter1 parameter2)

給出的另一個答案是管道bash本身:

echo 'uname -a' | bash 

這也將在子shell中執行,以便在您需要的同一個shell中運行:

echo 'uname -a' | bash -c

順便說一下,你也可以使用back ticks而不是$()語法,但它是 不建議


9
2017-12-27 13:12





用這個:

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

3
2017-12-27 09:10



這沒有什麼不對,但它會產生另一個bash shell。 - Chris Sherlock