我有一個bash命令,如何使用反引號在命令中運行?
a=`xyz | head -n 1 | awk '{print $2}'`
這是用來獲取版本號
我使用它的次數,避免冗餘,我決定把它存儲爲一個字符串,並執行它每當我需要,但現在只有xyz的stdout被存儲到變量。
這是我如何做,
cmd="xyz | head -n 1 | awk '{print \$2}'"
a=`$cmd`
我在做什麼錯?如何解決它?還建議如果有一個更簡單/更好的方式來實現它。
我有一個bash命令,如何使用反引號在命令中運行?
a=`xyz | head -n 1 | awk '{print $2}'`
這是用來獲取版本號
我使用它的次數,避免冗餘,我決定把它存儲爲一個字符串,並執行它每當我需要,但現在只有xyz的stdout被存儲到變量。
這是我如何做,
cmd="xyz | head -n 1 | awk '{print \$2}'"
a=`$cmd`
我在做什麼錯?如何解決它?還建議如果有一個更簡單/更好的方式來實現它。
建議是否有更簡單/更好的實現方法。
你命令可以縮短爲:
xyz | awk '{print $2; exit}'
而且你可以創建這樣的功能,而不是一個字符串存儲:
mycmd() {
xyz | awk '{print $2; exit}'
}
而且使用它作爲:
a=$(mycmd)
看來你只想要第一場第二場ne命令xyz
的輸出,並將其存儲在變量a
中。那麼爲什麼不直接使用Bash來做到這一點?
read _ a _ < <(xyz)
什麼OP做錯了引用包含shell元字符的命令(管道),他們失去了它們的效果(一切都以'xyz'的參數結束)。使用'eval'可以解決這個問題,但功能非常簡潔。 –