AWS Linux下wget嵌入date命令的执行时机技术问询
关于
wget命令中date的执行时机 我来给你把这个事儿说清楚:你这条命令里用反引号包裹的date +%Y-%m-%d_%H:%M.%3N,在shell里属于命令替换——shell会在整个命令开始执行前的解析阶段就把反引号里的date命令执行完,把输出的时间字符串替换进去,之后才会启动wget去下载文件。
拿你举的例子来说:如果9点整执行这条命令,不管wget下载文件要花多久(哪怕下载耗时5分钟),文件名里的时间戳都是9点整加上shell解析这条命令的极短耗时——这个耗时几乎可以忽略,基本就是你触发命令那一刻的时间。
这背后是shell处理命令的固定流程:
- 第一步:先处理命令行里所有的变量替换、命令替换(反引号或
$()写法),生成一个完全展开的“最终命令” - 第二步:才会执行这个最终命令
所以哪怕下载过程再久,文件名的时间都是在解析阶段就确定好的,和文件接收的耗时完全没关系。
内容的提问来源于stack exchange,提问作者Jeff Masiello
相关产品推荐
相关产品推荐

