【发布时间】:2021-03-12 02:07:15
【问题描述】:
我正在尝试使用以下命令从 HTTP 标头获取文件时间。
curl -sLI http://sgp-ping.vultr.com/vultr.com.100MB.bin | grep -i '^Last-Modified' | cut -c16- | date -f- '+%F %T'
一般情况下可以返回查询结果。
如果由于网络问题导致查询失败,则返回null。
我想在查询失败时返回当前系统时间。所以我使用了shell操作符“||”,用法如下。
curl -sLI http://sgp-ping.vultr.com/xxx.bin | grep -i '^Last-Modified' | cut -c16- | date -f- '+%F %T' || date '+%F %T'
但它并没有按预期工作,这是怎么回事?
任何帮助,在此先感谢!
【问题讨论】:
-
false | true | true | true || echo hmm...- 这是一个pipeline -
@jhnc 哦,现在我明白了。这个问题有解决办法吗?
-
如果是 bash,则有
PIPESTATUS数组。对于 POSIX shell,这很困难。 -
@Lorraine1996 :
date -f- '+%F %T'的退出代码应为 0,因此不会执行date '+%F %T'。