![尝试创建一个带有日期和时间且带有空格的文件夹](https://linux22.com/image/1014379/%E5%B0%9D%E8%AF%95%E5%88%9B%E5%BB%BA%E4%B8%80%E4%B8%AA%E5%B8%A6%E6%9C%89%E6%97%A5%E6%9C%9F%E5%92%8C%E6%97%B6%E9%97%B4%E4%B8%94%E5%B8%A6%E6%9C%89%E7%A9%BA%E6%A0%BC%E7%9A%84%E6%96%87%E4%BB%B6%E5%A4%B9.png)
我正在尝试使用以下命令创建文件夹:
mkdir $(date +%Y-%m-%d %H%M)
因此,您会看到两者之间有一个空格,我知道这不是最佳做法,但我希望它能够发挥作用。
我曾尝试逃离空间,使用引号,但似乎没有任何作用,这让我发疯。
请问有什么想法吗?
答案1
您需要在整个$(...)
命令替换周围加上引号(必须是“双引号”),以及在格式字符串参数周围加上引号date
(“双引号”或“单引号”都可以):
mkdir "$(date '+%Y-%m-%d %H%M')"
如果您不引用包含空格的参数(包括结果中可能包含空格的命令替换),它们将被 shell 进行分词,最终您会得到多个单独的参数而不是一个,这些参数将由命令以不同的方式解释。
“双”引号和“单”引号之间的主要区别在于,您仍然可以在双引号内进行变量扩展和命令替换,而单引号会阻止任何类型的评估并使 shell 按原样处理字符串。