2017-01-10 50 views
0

我有這樣的功能:如何將函數的結果作爲參數傳遞給Bash函數?

test() { 
    echo "$1" 
} 

$1可以接收的參數。此作品:

test "i am here" 
i am here 

現在我想要收到date的結果。

date 
Tue Jan 10 10:36:10 CST 2017 

test `date` 
Tue 

如何使1月10日十點36分10秒CST 2017年不能省略?

+1

它完全不是*省略*,而是作爲單獨的參數傳遞,因爲執行不帶引號的擴展(有一些例外,如賦值的右邊)會經過字符串分割和通配以形成它們的單詞列表評估爲。例如'10'是''$ 2''。如果你通過http://shellcheck.net/運行你的代碼,它會發現導致這個錯誤的引用。 –

+1

順便說一句,'$()'語法是強烈的首選 - 它是POSIX sh的一個必需部分,因此可移植,但也比反引號更容易嵌套。 (寫'hello'$(殘酷的「$(world)」)「'是微不足道的;它的基於反向的等價...不是)。 –

回答

2

您需要括在雙引號date結果整個日期字符串作爲一個參數被髮送到你的函數:

test "`date`" 

,或者更優選:

test "$(date)" 

這裏是一個例子:

$ test "$(date)" 
Tue Jan 10 03:17:26 UTC 2017 
相關問題