我有这样的 bash 脚本:
trap "exit" INT
read -p "your text : " opsi
echo $opsi
我的预期是当我在输入时提交 CTRL+C 时read
,它将触发exit
如下命令:
user@host:~$ ./script
your text :^C
<exit/close/logout user session>
那可能吗 ?
答案1
如果您想捕捉用户点击的时间,Ctrl-C
那么您需要使用SIGINT
信号。
trap exit SIGINT
exit
当用户按下 Ctrl-C 时,这将执行命令(希望您已经在脚本的其他地方定义该命令)。
此外,避免使用作为命令名称,因为它很容易与定义脚本退出状态的exit
内置命令发生冲突。exit
➜ ~ cat test.sh
#!/bin/bash
function script_exit()
{
let ctrlc_count++
echo
if [[ $ctrlc_count == 1 ]]; then
echo "Once more and I quit."
else
echo "That's it. I quit."
exit 1
fi
}
trap script_exit SIGINT
read -p "your text: " opsi
echo $opsi
➜ ~ bash test.sh
your text: ^C
Once more and I quit.
^C
That's it. I quit.