例子:

例子:

如果我在 Ubuntu 上运行以下命令行:

var="$(date +"%x %r %Z")"
echo var

我可以得到所需的输出。但如果我只是运行

date +%x %r %Z

我会得到错误:

日期:额外操作数‘%r’

尝试“date--help”获取更多信息。

那么 date 命令对应的是什么var="$(date +"%x %r %Z")"?谢谢。

答案1

您没有复制完全相同的命令。您写date +"%x %r %Z"在括号内。这在外面工作得很好。否则,date有三个参数(+%x%r%Z),而不是一个(+%x %r %Z)。

man bash

使用 $(command) 形式时,括号内的所有字符组成命令;没有字符
会被特殊处理。命令替换可以嵌套。

括号在评估内容之前进行匹配,因此命令不会被拆分为$(date +%x, %r, %Z)

注意:
您忘记了$echo $var

答案2

那么var="$(date +"%x %r %Z")"对应的date命令是什么?

嗯,正如您在另一个答案中指出的那样,您错过了正确引用选项,它至少应该是:

date +"%x %r %Z"

这是必要的,因为你使用空格来区分不同的信息,日期手册页建议使用-, 或_,这样您可以在普通终端中省略所有引用,或者转义空格。


例子:

  • 使用“-”作为分隔符

    date +%x-%r%Z
    

    输出结果如下:

    21.09.2018-11:30:15 CEST
    
  • 使用 '_' 作为分隔符

    date +%x_%r%Z
    

    输出结果如下:

    21.09.2018_11:30:15 CEST
    
  • 使用转义的空格作为分隔符

    date +%x\ %r%Z
    

    输出结果如下:

    21.09.2018 11:30:15 CEST
    
  • 根本不使用分隔符

    date +%x%r%Z
    

    输出结果如下:

    21.09.201811:30:15 CEST
    

特殊用例的余数。当您尝试将日期合并到crontab命令中时,您还需要转义符号%。因此,作为完整信息,命令将如下所示(之前提到的规则仍然适用于转义):

date +\%x\%r\%Z

相关内容