如果检查的内容发生变化,脚本还会继续吗?

如果检查的内容发生变化,脚本还会继续吗?

我对此有疑问。我已将其作为启动程序。

如果下载结束或者我删除 .part 文件,脚本会暂停吗?

 for file in /home/andy/Downloads/*.part ; do
        if [[ -f $file ]]; then
            echo "File download in progress."
            echo "Computer can not suspend until download is complete."
            echo "Now exiting."
            sleep 2 
            break
        fi
    done

    echo "This script will suspend computer in 5 minutes if there is no mouse or keyboard activity."
    while :; do
      if (( $(xprintidle) >= 300000 )); then
        systemctl suspend
    fi
      sleep 0.5
    done

2019 年 3 月 26 日下午 6:00 我尝试了基于 Sergiy 的答案的代码,但出现错误:

line 5: [: too many arguments

代码

#!/bin/bash
old=$(du -sh /home/andy/Downloads/myfile.iso)
while true; do
    new=$(du -sh /home/andy/Downloads/myfile.iso)
    if [ $old -eq $new  ] ; 
    then
        break
    fi
    old=$new
    xdotool getactivewindow key Ctrl
    sleep 5
done

line 5: [: too many arguments

答案1

该脚本仍将允许计算机暂停,因为for循环没有向 GUI 发送任何信号并且没有生成 GUI 事件。

我有时会找到正在下载的文件并监视其大小是否发生变化,同时发出 Ctrl 键按下事件xdotool。换句话说,这可能是

old=$(du -sh ~/Downloads/myfile.iso)
while true; do
    new=$(du -sh ~/Downloads/myfile.iso)
    if [ $old -eq $new  ] ; then
        break
    fi
    old=$new
    xdotool getactivewindow key Ctrl
    sleep 5
done

至于脚本中的第二个循环,是可以的。

相关内容