我正在运行一个在线商店,我可以在其中放置一个变量 versiontag 来包含 JS 和 CSS 作为缓存破坏者。IE。
styles.css?v2018_01
Run Code Online (Sandbox Code Playgroud)
其中2018_01是版本标签。现在我还有一个 CLI 工具,可以像这样快速设置
mr config:set 'design/head/meta_version_tag' [insert_my_var_here]
Run Code Online (Sandbox Code Playgroud)
我想要做的是创建一个 Bash 别名,在它运行时将变量设置为 Unix 时间戳。我知道我可以使用date +%s.
所以我会做一个这样的别名:
mr config:set 'design/head/meta_version_tag' date +%s
Run Code Online (Sandbox Code Playgroud)
但是 CLI 将 解释date +%s为字符串,而不是首先获取其输出。
所以我需要的是这样的输出:
mr config:set 'design/head/meta_version_tag' 1519747390
Run Code Online (Sandbox Code Playgroud)
所以我的问题是;如何在我的别名中获得 unix 日期戳的输出?
如果您使用,bash您可以使用命令替换:
mr config:set 'design/head/meta_version_tag' $(date +%s)
Run Code Online (Sandbox Code Playgroud)
这将首先date +%s在子 shell 中运行并将输出包含为字符串,请参阅man bash扩展/命令替换:
Bash 通过执行
command命令替换并将命令替换替换为命令的标准输出来执行扩展, 并删除任何尾随的换行符。
在这种情况下,不需要引用命令替换(就像您通常会做的那样),因为 的输出date +%s没有任何空格。