Zen*_*Zen 8 shell bash shell-script
我想构建一个错误处理程序,它将创建一个标有 error_occur 时间的空文件。
核心思想是使用date命令的结果作为参数。
我做了:
time_stamp=$(date)
touch $time_stamp
Run Code Online (Sandbox Code Playgroud)
但事实证明,这会创建一系列空文件,例如2014, Wed, 11:15:20。
如何在此处将时间戳转换为整个字符串?
cuo*_*glm 14
你必须双引号你的变量:
time_stamp="$(date)"
touch "$time_stamp"
Run Code Online (Sandbox Code Playgroud)
在这种情况下,双引号 in"$(date)"不是强制性的,但这样做是一个很好的做法。您可以阅读本文以获得更多理解。
Ant*_*hon 14
cuonglm 的回答一般解决了创建带有空格的文件的问题,但问题是从使用date.
如果您想使用日期或日期时间字符串作为文件名的一部分,您应该始终使用该--rfc-3339选项(如果在最新的 GNU 系统上)或适当的格式字符串。这将为您提供可按逻辑方式排序的文件名。该--rfc-3339选项需要一个参数,使用seconds,ns或date取决于你在文件名要准确:
time_stamp="$(date --rfc-3339=seconds)"
touch "$time_stamp"
Run Code Online (Sandbox Code Playgroud)
您还可以获取不带任何空格的特定字符串和您需要的信息date +FORMAT(man date用于详细信息)。
time_stamp="$(date +%Y%m%d-%H%M)"
touch "$time_stamp"
Run Code Online (Sandbox Code Playgroud)
会给你一个名字像20141029-0944没有空格的文件,给你一种你不需要引用的错觉。但是您仍然这样做,因为您仍然会调用split+glob运算符,如果在$IFS已更改默认值的上下文中使用该运算符,该运算符仍然可以实际拆分。