尝试创建一个带有空格的日期和时间的文件夹

alw*_*ng 3 command-line bash scripts

我正在尝试使用以下方法创建文件夹:

mkdir $(date +%Y-%m-%d %H%M) 
Run Code Online (Sandbox Code Playgroud)

所以你看到两者之间有一个空格,我知道这不是最佳实践,但我想让它起作用。

我试图逃避空间,使用引号,但似乎没有任何效果,这让我发疯。

请问有什么想法吗?

Byt*_*der 7

您需要在整个$(...)命令替换(必须是“双引号”)以及格式字符串参数date(“double”或“single”都可以)周围加上引号:

mkdir "$(date '+%Y-%m-%d %H%M')"
Run Code Online (Sandbox Code Playgroud)

如果您不引用包含空格的参数(包括可能在其结果中包含空格的命令替换),它们将受到 shell 的分词,并且您最终会得到多个单独的参数而不是一个,这些参数将被解释不同的命令。

“双”和“单”引号之间的主要区别在于,您仍然可以在双引号内进行变量扩展和命令替换,而单引号会阻止任何类型的评估并使外壳程序按原样处理字符串。