我想将 log_files 命名为log_Jan_01_hh:mm:ss
,因此变量时间戳定义为date +"%b_%d_%T"
。
现在,如果我将值设置为变量:
setenv now `date +"%b_%d_%T"`
然后$now
变量在那一刻确实得到值更新,因此所有时间日志文件都具有相同的名称。
我怎样做才能让它$now
的价值每时每刻都刷新?
答案1
如果您只在 中存储一个字符串$now
,并在调用它时添加反引号,您将获得当前日期:
[~]% setenv now 'date +"%b_%d_%T"'
[~]% echo $now
date +"%b_%d_%T"
[~]% echo `$now`
"Dec_03_13:09:52"
[~]% echo `$now`
"Dec_03_13:09:54"
这实际上与执行以下操作相同:
[~]% echo `date +"%b_%d_%T"`
没有办法告诉tcsh
重新评估调用变量的命令;您将一个字符串分配给$now
,并且tcsh
无法知道生成该字符串的命令是什么。
另一个(可能的)解决方案可能是使用函数,但tcsh
也缺少这些......
答案2
添加到您的 crontab,并每分钟运行一次。
crontab -e
插入这样一行:
* * * * * setenv now 'date +"%b_%d_%T"'
保存并退出。您的变量将每分钟更新一次。