2017-06-14 58 views
0

我需要一個bash函數,它將一個帶有字符串的date_time字符串前綴。我希望Bash字符串連接詢問數字參數

show_neb_2017_05_20_16_55

我現在的功能就已經這樣做了,除了它是需要數字參數。

function show_neb() { 
     a='show_neb_'$(date +"%Y_%m_%d__%H_%M") 
     return $a 
     } 

    echo $(show_neb) 

我本來期待它能夠工作,但事實並非如此。這不僅僅是一個字符串的直接標準輸出嗎?

+1

你缺少的是'return'只返回成功/失敗,而不是一個字符串。做你想做的事情,試着'echo「$ a」;返回0;' –

回答

2

return只能用於爲函數提供整數退出代碼,而不是任意字符串值。要模擬返回值,您需要寫入標準輸出,然後通過命令替換捕獲。

show_neb() { 
    date +"show_neb_%Y_%m_%d__%H_%M" 
    # Replacing echo "show_neb_$(date +"%Y_%m_%d__%H_%M")" 
} 

val=$(show_neb) 

殼函數真的不是通常意義上的函數;它們更像是源自內存的shell腳本。

+0

只要運行該函數就可以做他們想要的。 – 123

+0

是的;如果你想把「返回值」賦給一個變量,我強調你需要什麼。 – chepner

+0

在函數中很好地使用'date'輸出,而不是顯式的'echo'或'printf'':)(當然,在這種情況下,你可以完全擺脫show_neb函數,只需要使用命令在'date'命令本身的替代) –