Shell入门问题

shrinerain 2006-05-30 07:15:32
我是Unix初学者,现在在照着书一边看一边练习。

其中有一个这样的小程序
#!/bin/bash
trap "On_Exit" 2 3
i=0
function On_Exit
{
echo "Now the count is $i"
exit 1
}
while :
do
i=`expr $i + 1`
done

我预计的结果是每次按Ctrl+C退出的时候会打印出i的当前值,但实际上很多时候都打印不出来,即i值为空。

请问这是为什么?

操作系统AIX 5.2 ,bash3.0

谢谢!
...全文
206 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
x86 2006-05-31
  • 打赏
  • 举报
回复
你可以用
let i=$i+1
shrinerain 2006-05-30
  • 打赏
  • 举报
回复
哦,自己以C++/Java等的思维来理解,觉得shell这样处理很奇怪
linaxing 2006-05-30
  • 打赏
  • 举报
回复
你自己分析的完全正确,expr确实如此
shrinerain 2006-05-30
  • 打赏
  • 举报
回复
谢谢楼上,

可否多试几次?

我在RedHat和AIX都是这样子。

加上set -x看调试

似乎 i=`expr $i + 1` 这一句执行时i是空值的,expr执行完毕i才又赋值

如果程序此时按ctrl+c,就会出现打印不出来的情况
kingofworl 2006-05-30
  • 打赏
  • 举报
回复
可以在 trap后面加上 debug 跟踪一下变量的值
kingofworl 2006-05-30
  • 打赏
  • 举报
回复
我试过了,没遇到过你说的情况

23,121

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧