2017-06-14 25 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'命令本身的替代) –