bash中如何将带有空格的字符串视为一个整体?

bash中如何将带有空格的字符串视为一个整体?

我想构建一个错误处理程序,它将创建一个标有 error_occurr 时间的空文件。

核心思想是使用date命令的结果作为参数。

我做了:

time_stamp=$(date)
touch $time_stamp

但这会创建一系列空文件,例如2014, Wed, 11:15:20

这里如何将 time_stamp 转换为整个字符串?

答案1

cuonglm 的答案一般解决了创建带空格的文件的问题,但问题是从使用date.

如果您想使用日期或日期时间字符串作为文件名的一部分,您应该始终使用该--rfc-3339选项(如果在最新的 GNU 系统上)或适当的格式字符串。这将为您提供可以按逻辑方式排序的文件名。该--rfc-3339选项采用一个参数,使用或seconds,具体取决于您想要的文件名精度:nsdate

time_stamp="$(date --rfc-3339=seconds)"
touch "$time_stamp"

您还可以获取不带任何空格的特定字符串,仅获取您需要的信息date +FORMATman date用于详细信息)。

time_stamp="$(date +%Y%m%d-%H%M)"
touch "$time_stamp"

将为您提供一个名称类似于20141029-0944不带空格的文件,并给您一种不需要引用的错觉。但你仍然这样做,因为你仍然会调用分割+全局$IFS如果在默认值已更改的上下文中使用,该运算符实际上仍然可以拆分。

答案2

您必须双引号您的变量:

time_stamp="$(date)"
touch "$time_stamp"

在这种情况下,双引号 in"$(date)"不是强制性的,但这样做是一个很好的做法。你可以阅读为了更多的理解。

相关内容