有没有办法创建一个环境变量,每次显示时显示当前日期?我试过了
CURRDATE="`date "+%H:%M:%S"`"
但该值在创建时固定:
>echo $CURRDATE
23:41:46
>echo $CURRDATE
23:41:46
>echo $CURRDATE
23:41:46
谢谢。
答案 0 :(得分:2)
SECONDS
接近你想要的。您可以将其值设置为当前时间,并且当前shell将继续增加其值。
% SECONDS=$(date +%s)
% echo $SECONDS
1390597152
% echo $SECONDS
1390597153
% echo $SECONDS
1390597154
如果你想要一个带有自定义名称的变量,你必须安排在其中一个钩子函数中更新它。
precmd () {
CURRDATE=$(date +%s)
}
答案 1 :(得分:1)
无法在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
答案 2 :(得分:0)
您是否正在寻找解决方案:
echo $(date "+%H:%M:%S")