2014-04-14 43 views
3

我有一個bash命令,如何使用反引號在命令中運行?

a=`xyz | head -n 1 | awk '{print $2}'` 

這是用來獲取版本號

我使用它的次數,避免冗餘,我決定把它存儲爲一個字符串,並執行它每當我需要,但現在只有xyz的stdout被存儲到變量。

這是我如何做,

cmd="xyz | head -n 1 | awk '{print \$2}'" 
a=`$cmd` 

我在做什麼錯?如何解決它?還建議如果有一個更簡單/更好的方式來實現它。

回答

4

建議是否有更簡單/更好的實現方法。

你命令可以縮短爲:

xyz | awk '{print $2; exit}' 

而且你可以創建這樣的功能,而不是一個字符串存儲:

mycmd() { 
    xyz | awk '{print $2; exit}' 
} 

而且使用它作爲:

a=$(mycmd) 
+3

什麼OP做錯了引用包含shell元字符的命令(管道),他們失去了它們的效果(一切都以'xyz'的參數結束)。使用'eval'可以解決這個問題,但功能非常簡潔。 –

1

看來你只想要第一場第二場ne命令xyz的輸出,並將其存儲在變量a中。那麼爲什麼不直接使用Bash來做到這一點?

read _ a _ < <(xyz) 
相關問題