命令的结果未分配给变量

命令的结果未分配给变量

对于 BASH 和 Shell 脚本编写,我相当缺乏经验(温和地说),所以请耐心等待:

$ toda=$(date) | echo $toda

给我:Fr 29 Mai 2020 15:25:19 CEST。到目前为止,一切都很好。

datediff 是 dateutils 包的一部分,返回日期之间的天数:

datediff 2019-12-31 2020-05-29

给我:150。再说一遍,到目前为止一切顺利。但:

toda=$(datediff 2019-12-31 2020-05-29) | echo $toda

给我返回: Fr 29 Mai 2020 15:25:19 CEST 而不是(如预期)150。换句话说,它没有分配 datediff 结果,而是保持前一个操作的值不变。当然我尝试过:

anothervarname=$(datediff 2019-12-31 2020-05-29) | echo $anothervarname

它返回一个空变量(即提示上方的空行)。我需要做什么才能将上面示例中的 datediff 结果分配给变量?感谢您的帮助。

答案1

'|'用于将一个命令的输出重定向到下一个命令。在您的情况下,第一个命令中不会产生任何输出,因为它只是将值分配给变量。

你必须使用的是:(试试这个)

toda=$(date) && echo "$toda"

&&-> 仅当第一个命令成功时才执行尾随命令。AND 运算符。

相关内容