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

use*_*911 2 command-line date

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

var="$(date +"%x %r %Z")"
echo var
Run Code Online (Sandbox Code Playgroud)

我可以获得所需的输出。但如果我只是跑

date +%x %r %Z
Run Code Online (Sandbox Code Playgroud)

我会得到错误:

日期:额外的操作数“%r”

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

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

use*_*259 5

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

来自man bash

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

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

注意:
你忘了$echo $var