仅当“time”之后的命令成功时才显示“time”的输出

仅当“time”之后的命令成功时才显示“time”的输出

time我希望仅当已传递的命令time成功时才显示命令的输出。像这样的东西:

( time wget -pq --delete-after https://www.example.com ) 2>&1 || echo fail

问题是,如果wget失败,我仍然收到输出time(这是合乎逻辑的,因为它测量命令失败所需的时间)。我的目标是将输出保存到变量中,并在我的变量中包含0m0.100s或。fail有谁知道我该如何以体面的方式做到这一点?

答案1

你可以这样做:

$ if var=$( { time true; } 2>&1 ); then echo "$var"; else echo fail; fi

real    0m0.000s
user    0m0.000s
sys 0m0.000s

$ if var=$( { time false; } 2>&1 ); then echo "$var"; else echo fail; fi
fail

相关内容