我想构建一个错误处理程序,它将创建一个标有 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
,具体取决于您想要的文件名精度:ns
date
time_stamp="$(date --rfc-3339=seconds)"
touch "$time_stamp"
您还可以获取不带任何空格的特定字符串,仅获取您需要的信息date +FORMAT
(man date
用于详细信息)。
time_stamp="$(date +%Y%m%d-%H%M)"
touch "$time_stamp"
将为您提供一个名称类似于20141029-0944
不带空格的文件,并给您一种不需要引用的错觉。但你仍然这样做,因为你仍然会调用分割+全局$IFS
如果在默认值已更改的上下文中使用,该运算符实际上仍然可以拆分。
答案2
您必须双引号您的变量:
time_stamp="$(date)"
touch "$time_stamp"
在这种情况下,双引号 in"$(date)"
不是强制性的,但这样做是一个很好的做法。你可以阅读这为了更多的理解。