当前位置: 技术问答>linux和unix
关于echo 不显示的一个问题
来源: 互联网 发布时间:2016-05-21
本文导语: #!/bin/sh loop=0 sig_int() { echo " interrupt signal was catched " echo "the loop is $loop" exit 0 } trap "sig_int" 2 while : do loop=`expr $loop + 1 ` done 一个简单的shell脚本,一个死循环对loop进行自增,然后捕获SIGINT然后打印...
#!/bin/sh
loop=0
sig_int()
{
echo " interrupt signal was catched "
echo "the loop is $loop"
exit 0
}
trap "sig_int" 2
while :
do
loop=`expr $loop + 1 `
done
一个简单的shell脚本,一个死循环对loop进行自增,然后捕获SIGINT然后打印loop的值,但是最后有时候显示不出来loop的值
有时候则可以,不知道是什么原因。
|
应该是 loop=`expr $loop + 1` 操作在中间被终止,导致了 loop 值的丢失
下面这个倒没问题
下面这个倒没问题
#!/bin/sh
loop=1
sig_int()
{
echo " interrupt signal was catched "
echo "the loop is $loop"
exit 0
}
trap "sig_int" 2
while :
do
(( loop++ ))
done
|
楼上说的原因是对的,也可以试试下面的方法。
因为 (( loop++ )) 的语法Bourne shell并不支持,虽然 (( loop++ )) 比用expr快的多。
因为 (( loop++ )) 的语法Bourne shell并不支持,虽然 (( loop++ )) 比用expr快的多。
#!/bin/sh
sig_int()
{
echo " interrupt signal was catched "
echo "the loop is $loop"
exit 0
}
trap "sig_int" 2
loop=1
while true
do
count=`expr $loop + 1`
loop=$count
done