我制作了一个脚本,用于检查家中服务器的运行状况。
smartctl -t short /dev/sda | awk '/Please wait/ {print $3}'
此命令显示SmartCTL完成测试之前需要多长时间。 但只是为了确定,我想添加一个命令sleep,该命令的输出加1分钟,以确保它真的完成。
有人可以帮助我吗?
答案 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秒。$(smartctl ...)
括在额外$((...))
中的计算结果为零,并防止最外层评估因语法错误而失败。答案 2 :(得分:1)
wait=`(smartctl -t short /dev/sda | awk '/Please wait/ {print $3}'` # minutes
sleep $(($wait + 1))m