有没有办法创建一个环境变量,每次显示当前日期时都显示当前日期?我试过了
CURRDATE="`date "+%H:%M:%S"`"
但该值在创建时是固定的:
>echo $CURRDATE
23:41:46
>echo $CURRDATE
23:41:46
>echo $CURRDATE
23:41:46
谢谢。
SECONDS
接近你想要的。您可以将其值设置为当前时间,当前 shell 将继续递增其值。
% SECONDS=$(date +%s)
% echo $SECONDS
1390597152
% echo $SECONDS
1390597153
% echo $SECONDS
1390597154
如果你想要一个具有自定义名称的变量,你必须安排在其中一个钩子函数中更新它。
precmd () {
CURRDATE=$(date +%s)
}
没有办法在 zsh 中单独创建一个行为方式的变量。除非从外部设置,否则变量的值不会更改。
CURRDATE
必须定期或至少在需要之前每次都设置为正确的时间。
幸运的是,zsh可以帮助解决这个问题。将此添加到您的.zshrc
:
export CURRDATE
currdate() {
CURRDATE=$(date "+%H:%M:%S")
}
add-zsh-hook preexec currdate
这会向环境添加CURRDATE
,并且每次在运行命令行之前都会更新它。
% echo $CURRDATE
12:34:56
% echo $CURRDATE
12:34:57
% env | grep CURRDATE
CURRDATE=12:34:58
请注意,命令运行时不会更新CURRDATE
,也就是说,您只能传递开始日期,而不能传递整个时钟。同样CURRDATE
对于同一命令行上的所有命令都是相同的:
% echo $CURRDATE; sleep 10; echo $CURRDATE
12:34:56
12:34:56
您是否正在寻找解决方案:
echo $(date "+%H:%M:%S")