例如,我想以下列格式显示当前日期和时间:
yyyymmddhhmmss
Run Code Online (Sandbox Code Playgroud)
我怎么做?这似乎是大多数日期格式自带-,/,:,等.
Sto*_*ica 163
干得好:
date +%Y%m%d%H%M%S
Run Code Online (Sandbox Code Playgroud)
如man date顶部附近所述,您可以使用如下date命令:
Run Code Online (Sandbox Code Playgroud)date [OPTION]... [+FORMAT]
也就是说,你可以给它一个格式参数,从a开始+.您可以猜测我使用的格式符号的含义:
%Y 是一年%m 是一个月%d 是为了一天你可以在其中找到这个和其他格式符号man date.
Bur*_*man 35
shell脚本中的一个简单示例
#!/bin/bash
current_date_time="`date +%Y%m%d%H%M%S`";
echo $current_date_time;
Run Code Online (Sandbox Code Playgroud)
没有标点格式: - +%Y%m%d%H%M%S
带标点符号: - +%Y-%m-%d%H:%M:%S
没有标点符号(正如@Burusothman 提到的):
current_date_time="`date +%Y%m%d%H%M%S`";
echo $current_date_time;
Run Code Online (Sandbox Code Playgroud)
开/关:
20170115072120
Run Code Online (Sandbox Code Playgroud)
标点符号:
current_date_time="`date "+%Y-%m-%d %H:%M:%S"`";
echo $current_date_time;
Run Code Online (Sandbox Code Playgroud)
开/关:
2017-01-15 07:25:33
Run Code Online (Sandbox Code Playgroud)
小智 5
如果您正在使用Bash,您还可以使用以下命令之一:
printf '%(%Y%m%d%H%M%S)T' # prints the current time
printf '%(%Y%m%d%H%M%S)T' -1 # same as above
printf '%(%Y%m%d%H%M%S)T' -2 # prints the time the shell was invoked
Run Code Online (Sandbox Code Playgroud)
您可以使用Option -v varname来存储结果,$varname而不是将其打印到stdout:
printf -v varname '%(%Y%m%d%H%M%S)T'
Run Code Online (Sandbox Code Playgroud)
虽然date命令将始终在子shell中执行(即在单独的进程中),但printf是内置命令,因此会更快.