2017-01-10 132 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 
相关问题