YouTube 暂停脚本可以通过命令行运行,但不能通过快捷方式运行

YouTube 暂停脚本可以通过命令行运行,但不能通过快捷方式运行

我想暂停 YouTube,并尝试了最后一种方法这里使用kill -SIGSTOP [pid].现在脚本在终端中运行良好,但使用键盘快捷键调用时不起作用。脚本:

#!/bin/sh
if [ -f /tmp/TimChromepid.RUN ]; then
  mv /tmp/TimChromepid.RUN /tmp/TimChromepid.PSD
  NMR=$(< /tmp/TimChromepid.PSD) 
  kill -SIGSTOP < /tmp/TimChromepid.PSD
else
  NMR=$(< /tmp/TimChromepid.PSD) 
  mv /tmp/TimChromepid.PSD /tmp/TimChromepid.RUN
  kill -SIGCONT $NMR
fi

我使用了变量'核磁共振'存储PID,因为当我直接将其输入时kill出现此错误:

kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]

据我测试,它似乎可以运行脚本和if语句,但无法从文件中读取数字,也无法执行 kill

我该如何修复这个问题以及发生了什么?

答案1

我认为问题与脚本是通过键盘快捷键运行还是直接在终端中运行无关。这更像是分支中的错误if,脚本会交替运行和失败。

if你写的分支中

kill -SIGSTOP < /tmp/TimChromepid.PSD

意思是:将文件内容通过管道传输/tmp/TimChromepid.PSDkill标准输入. 但kill没有读取任何内容标准输入,它只是接受 PID 作为命令行参数,而没有给出。这就是为什么它会告诉你它的用法。

要修复它,只需按照在else分支中所做的那样进行操作,即替换kill -SIGSTOP < /tmp/TimChromepid.PSDkill -SIGSTOP $(< /tmp/TimChromepid.PSD)使用$NMR

#!/bin/sh
if [ -f /tmp/TimChromepid.RUN ]; then
    mv /tmp/TimChromepid.RUN /tmp/TimChromepid.PSD
    NMR=$(< /tmp/TimChromepid.PSD) 
    kill -SIGSTOP $NMR
else
    NMR=$(< /tmp/TimChromepid.PSD) 
    mv /tmp/TimChromepid.PSD /tmp/TimChromepid.RUN
    kill -SIGCONT $NMR
fi

相关内容