在用户按下ctrl+;bash中的c?
我正在尝试编写一个bash脚本,其中我需要运行一个二进制文件,如果我按下Ctrl+c,那么在脚本中,后台运行的二进制文件也应该停止。我正在尝试此代码,但它没有帮助:在用户按下ctrl+;bash中的c?,bash,Bash,我正在尝试编写一个bash脚本,其中我需要运行一个二进制文件,如果我按下Ctrl+c,那么在脚本中,后台运行的二进制文件也应该停止。我正在尝试此代码,但它没有帮助: #!/bin/bash cd /usr/local/path-to-binary ./testBinary read input if (( "$input" == "Ctrl+c")); then ps -aef|grep Binary pkill -9 Binary 您的脚本中有几个错误。检查一下 下面是一个如何启动后台
#!/bin/bash
cd /usr/local/path-to-binary
./testBinary
read input
if (( "$input" == "Ctrl+c")); then
ps -aef|grep Binary
pkill -9 Binary
您的脚本中有几个错误。检查一下 下面是一个如何启动后台进程并在Ctrl+c上终止它的示例:
PS:只需运行脚本并按Ctrl+c<不需要代码>读取。脚本中有几个错误。检查一下 下面是一个如何启动后台进程并在Ctrl+c上终止它的示例:
PS:只需运行脚本并按Ctrl+c<代码>读取不是必需的。我建议养成一种习惯,在这里提问之前,先运行代码并修复它找到的所有内容。也就是说,在这里的代码中,
读取输入
在退出testBinary
之前不会运行,除非它自己后台处理,从而试图避免检测……而且(())
是一个算术构造——它对字符串比较没有意义,并不是说read
在被中断后将返回字符串Ctrl+c
。你能帮我摆脱这个脚本问题吗#Charles Duffy事实上我是一个shell脚本初学者。如果你从这段经历中得到的只是准备好复制和粘贴的代码作为答案,那么你将一无所获;这就是上面注释的要点,尤其是第一个注释。(我还建议记下和作为高质量的学习资源)。我建议养成一种习惯,在这里提问之前运行代码并修复它找到的所有内容。也就是说,在这里的代码中,read input
永远不会运行,直到退出testBinary
,除非它自己后台处理,从而试图避免检测……而且(())
是一个算术构造——它对字符串比较没有意义,并不是说read
在被中断后将返回字符串Ctrl+c
。你能帮我摆脱这个脚本问题吗#Charles Duffy事实上我是一个shell脚本初学者。如果你从这段经历中得到的只是准备好复制和粘贴的代码作为答案,那么你将一无所获;这就是上面注释的要点,尤其是第一个注释。(我还建议记下和作为高质量的学习资源)。
#!/bin/bash
# Register signal handler for SIGINT (Ctrl+c)
trap abort INT
function abort() {
echo "Sending SIGINT to background process ${pid}"
# Kill background process
kill "${pid}"
# Wait for it to finish after killing it
wait "${pid}"
# Exit the script
echo "Aborting"
exit 1
}
# Start long running process in background (&)
sleep 1000 &
# Obtain the pid of that process
pid=$!
# Wait for the background process to finish
wait