添加从命令输出中提取的时间

时间:2017-01-29 20:39:19

标签: bash shell awk

我制作了一个脚本,用于检查家中服务器的运行状况。

smartctl -t short /dev/sda | awk '/Please wait/ {print $3}'

此命令显示SmartCTL完成测试之前需要多长时间。 但只是为了确定,我想添加一个命令sleep,该命令的输出加1分钟,以确保它真的完成。

有人可以帮助我吗?

3 个答案:

答案 0 :(得分:2)

您可以捕获命令管道的输出并将其用作sleep的参数:

sleep_time=$(smartctl -t short /dev/sda | awk '/Please wait/ {print $3}')
# add logic to check if sleep_time is a number etc.
if [[ $sleep_time ]]; then
  sleep $((sleep_time + 60)) # assuming smartctl prints the wait value in seconds
else
  # there was no sleep time extracted from smartctl - add appropriate logic to handle that situation
fi

答案 1 :(得分:1)

sleep $((60+60*$(($(smartctl -t short /dev/sda|awk '/Please wait/ {print $3}')))))

似乎就是你要找的东西。

  • sleep默认为arg秒。
  • 如果子shell由于某种原因未输出整数,则
  • $(smartctl ...)括在额外$((...))中的计算结果为零,并防止最外层评估因语法错误而失败。

答案 2 :(得分:1)

wait=`(smartctl -t short /dev/sda | awk '/Please wait/ {print $3}'` # minutes
sleep $(($wait + 1))m