我们怎样才能在发出信号后回到正确的位置(我们指定的位置)?
How can we get back in the right place (that we specify) after signal?
我已经制作了自己的信号处理程序,但我需要先返回
# I NEED TO JUMP HERE
echo -e "Input name of the file"
read filename
所以我可以多次输入文件名。但是当我执行信号(Ctrl + C)时,我进入处理程序然后在我执行信号的地方(所以我只能输入一次文件名)。
是否有任何命令(如 C 中的 siglongjump 和 setlongjump)可以帮助我控制整个过程。
count=0
flag=0
handl(){
echo
if test $flag -eq 0
then echo "You did not input filename"
fi
file $filename | grep "C source" > /dev/null
a=$?
if test $a -eq 0
then
count=$((count+1))
fi
echo "Number of C source files: $count"
}
trap handl 2
echo -e "Input name of the file"
read filename
flag=1
sleep 1
你可以模块化你的脚本,只在信号中打印一个提示
处理程序:
#!/usr/bin/env bash
count=0
flag=0
handl(){
echo
if test $flag -eq 0
then echo "You did not input filename"
prompt
return
fi
file "$filename" | grep "C source" > /dev/null
a=$?
if test $a -eq 0
then
count=$((count+1))
fi
echo "Number of C source files: $count"
}
prompt(){
echo -e "Input name of the file"
}
input(){
read -r filename
flag=1
echo sleep 1
sleep 1
}
trap handl 2
while true
do
prompt
input
done
我已经制作了自己的信号处理程序,但我需要先返回
# I NEED TO JUMP HERE
echo -e "Input name of the file"
read filename
所以我可以多次输入文件名。但是当我执行信号(Ctrl + C)时,我进入处理程序然后在我执行信号的地方(所以我只能输入一次文件名)。 是否有任何命令(如 C 中的 siglongjump 和 setlongjump)可以帮助我控制整个过程。
count=0
flag=0
handl(){
echo
if test $flag -eq 0
then echo "You did not input filename"
fi
file $filename | grep "C source" > /dev/null
a=$?
if test $a -eq 0
then
count=$((count+1))
fi
echo "Number of C source files: $count"
}
trap handl 2
echo -e "Input name of the file"
read filename
flag=1
sleep 1
你可以模块化你的脚本,只在信号中打印一个提示 处理程序:
#!/usr/bin/env bash
count=0
flag=0
handl(){
echo
if test $flag -eq 0
then echo "You did not input filename"
prompt
return
fi
file "$filename" | grep "C source" > /dev/null
a=$?
if test $a -eq 0
then
count=$((count+1))
fi
echo "Number of C source files: $count"
}
prompt(){
echo -e "Input name of the file"
}
input(){
read -r filename
flag=1
echo sleep 1
sleep 1
}
trap handl 2
while true
do
prompt
input
done