|
发表于 2005-4-8 15:01:28
|
显示全部楼层
Post by lksj
- #!/bin/ksh
- function trap_exit
- {
- BREAK_OUT='Y'
- print -p $BREAK_OUT
- }
- function proc_watch
- {
- while :
- do
- echo "1"
- read $BREAK_OUT
- if [[ $BREAK_OUT = 'Y' ]]
- then
- return 0
- fi
- done
- }
- trap 'trap_exit;exit 2' 1 2 3 15
- TOTAL_SECONDS=300
- BREAK_OUT='N'
- proc_watch |&
- PW_PID=$1
- until (( TOTAL_SECONDS == 0 ))
- do
- (( TOTAL_SECONDs = TOTAL_SECONDS - 1 ))
- sleep 1
- done
- Break_OUT='Y'
- print -p $BREAK_OUT
- kill $PW_PID
- exit 0
复制代码
运行后报错,
[root@localhost test]# sh 2.sh
2.sh: line 24: syntax error near unexpected token `&'
2.sh: line 24: `proc_watch |&'
另外,还想请问一下(( ))和[[ ]]的区别
1,你用的是ksh,那么执行脚本的时候,就应该
ksh urscript
2,应为你用的是sh urscript,而|&是ksh一个co-process,出错,那是必然的!因为除了ksh的shell,都不支持co-process!
3,(())和[[]]没太多区别!一般来说(一个软性规定),(())用于test数字,[[]]用于比较字符,这样作的好处是便于阅读而已!当然,你用[[]]比较数字也没有人说你! |
|