我在输入keyphrase
时找到如何退出脚本时遇到问题:例如: "富&#34 ;.
基本上我希望测试这个短语的每个用户输入并调用exit命令。我可以创建一个我在每次用户输入后调用的测试函数,但这看起来不太优雅。
我正在使用功能:
function EXIT {
printf "\n\nSCRIPT IS NOW TERMINATING\n"
if [ -n $userLogged ]; then
local TIME="$username LOGGED OUT at: "$(date +%r)" on the "$(date +%d/%m/%Y)"\n"
printf "$TIME" >> usage.db
fi
exit
}
和
trap EXIT SIGTERM
可以使用陷阱来完成吗?
答案 0 :(得分:1)
我不确定,但我猜你是在追求这样的事情:
#!/bin/bash
# Save this script as "my_exit"
function EXIT {
printf "\n\nSCRIPT IS NOW TERMINATING\n"
if [ -n $userLogged ]; then
local TIME="$username LOGGED OUT at: "$(date +%r)" on the "$(date +%d/%m/%Y)"\n"
printf "$TIME" >> usage.db
fi
exit
}
trap EXIT SIGUSR1
while :; do
read -p "Enter your test word: " word
if [ "$word" = "Foo" ];
then
pkill --signal SIGUSR1 my_exit
fi
done
我使用SIGUSR1代替SIGTERM只是为了更好地展示功能。也可以将其改为两个单独的脚本,只需稍作修改,即“EXIT + trap”块为1,永久循环为另一个,后者通过SIGUSR1发出第一个进行退出例程。