Bash 将分钟添加到从命令输出提取的时间
我正在制作一个脚本来检查我家服务器的运行状况Bash 将分钟添加到从命令输出提取的时间,bash,shell,awk,Bash,Shell,Awk,我正在制作一个脚本来检查我家服务器的运行状况 smartctl -t short /dev/sda | awk '/Please wait/ {print $3}' 此命令显示SmartCTL完成测试所需的时间。 但为了确定,我想添加一个命令sleep,该命令的输出加上1分钟,以确保它真正完成 有人能帮我吗?您可以捕获命令管道的输出,并将其用作睡眠参数: 似乎就是你要找的 睡眠默认为arg(秒)。 随函附上$smartctl。。。额外的美元。。。如果子shell由于某种原因未输出整数,则计算结
smartctl -t short /dev/sda | awk '/Please wait/ {print $3}'
此命令显示SmartCTL完成测试所需的时间。
但为了确定,我想添加一个命令sleep,该命令的输出加上1分钟,以确保它真正完成
有人能帮我吗?您可以捕获命令管道的输出,并将其用作睡眠参数: 似乎就是你要找的 睡眠默认为arg(秒)。 随函附上$smartctl。。。额外的美元。。。如果子shell由于某种原因未输出整数,则计算结果为零,并防止最外层的计算因语法错误而失败。
请显示输出是什么样子以及您希望它是什么样子。嗯,我没有想到在sleep命令中添加分钟,我正在尝试将它添加到SmartCTL命令输出的变量中!非常感谢,那会帮我的!!谢谢,我没有想到在sleep命令中添加额外的分钟,我会尝试一下!谢谢,我没有想到在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
sleep $((60+60*$(($(smartctl -t short /dev/sda|awk '/Please wait/ {print $3}')))))
wait=`(smartctl -t short /dev/sda | awk '/Please wait/ {print $3}'` # minutes
sleep $(($wait + 1))m