Ctrl-C停止shell脚本的执行
我有一个shell脚本,如下所示。这不会在按下Ctrl-C时终止。您能否指导我如何修改以下代码以终止在Ctrl-C上作为输入的执行Ctrl-C停止shell脚本的执行,shell,signals,copy-paste,Shell,Signals,Copy Paste,我有一个shell脚本,如下所示。这不会在按下Ctrl-C时终止。您能否指导我如何修改以下代码以终止在Ctrl-C上作为输入的执行 #!/bin/bash validateURL() { regex='(https?|ftp|file)://[-A-Za-z0-9\+&@#/%?=~_|!:,.;]*[-A-Za-z0-9\+&@#/%=~_|]' string=$1 if [[ $string =~ $regex ]]
#!/bin/bash
validateURL()
{
regex='(https?|ftp|file)://[-A-Za-z0-9\+&@#/%?=~_|!:,.;]*[-A-Za-z0-9\+&@#/%=~_|]'
string=$1
if [[ $string =~ $regex ]]
then
echo "0"
else
echo "1"
fi
}
RED='\033[0;31m'
echo -n "Enter the URL :"
while read URL_REGISTRY
do
if [ $(validateURL $URL_REGISTRY) == "0" ]
then
break
else
echo -e "${RED}Wrong URL entered."
tput sgr0
echo -n "Enter the URL again :"
fi
done
发生这种情况的唯一方法是,如果您的shell阻塞了
SIGINT
。根据你的描述,你的外壳似乎能做到这一点。重置shell中的SIGINT
,以便脚本接收SIGINT
在shell中运行以下命令并运行脚本:
trap - SIGINT
尝试:
如果不起作用,请尝试:
stty -a
找出你的设置有什么问题。如果你不能,用stty-a的输出更新你的答案
还要确保您没有捕获其他答案中提到的中断信号(2)。谢谢,我知道这一点。但我只想使用ctrl-C.:)我不明白为什么它不会在Ctrl+C上终止。这是正确的scipt吗?您是否在代码中的任何地方设置了忽略SIGINT的trapcal?这就是我的整个脚本。当我按Ctrl-C时,它只打印“^C”,认为输入错误,并继续阅读输入。谢谢。将此添加到我的脚本解决了问题
stty -a