我想将格式化日期存储在变量中,并希望每次都使用该格式。 例如:
export MYDATE=$(date +%m%d%Y)
mkdir myfolder_$MYDATE
但在上述情况下,MYDATE仅使用当前日期评估一次。相反,我希望每次调用$ MYDATE(每次都像exec这样的东西)时得到最新的日期。我也试过
export MYDATE='$(date +%m%d%Y)'
但这没用。
同样,我不想尝试别名或bash函数,并希望使用bash环境变量来实现这一点。
有任何建议或想法吗?
答案 0 :(得分:1)
在Bash 4.3(当前版本)和更早版本中,环境变量计算一次,存储为字符串(导出或不导出),然后只要引用变量就会检索该字符串。要每次都获得更新的字符串,除了使用您似乎知道的别名或函数之外别无他法。
更新变量的一种hacky方式是在$PROMPT_COMMAND
内进行,例如:
PROMPT_COMMAND='MYDATE=$(date +%m%d%Y)'
但是,这只会在每次重绘提示时运行。
答案 1 :(得分:1)
在bash
4.4(尚未发布)中,您可以执行以下操作:
$ mydate="\D{%m%d%Y %T}"
$ echo "${mydate@P}"
08102016 12:22:02
# wait a few seconds
$ echo "${mydate@P}"
08102016 12:22:05
展开mydate
时,会扩展值中的任何提示转义序列,就像显示提示一样。这不提供执行任意代码的方法,但至少会覆盖您问题中的用例。
答案 2 :(得分:1)
我建议使用一个功能:
function mydate(){
date +%m%d%Y
}
然后使用command substitution将值插入字符串:
mkdir "foo_$(mydate)"
顺便说一句,您可以使用以下命令使子函数可用于
export -f mydate
Imo这是最干净的方式。