免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3175 | 回复: 13
打印 上一主题 下一主题

跳出循环,变量值消失. SOS [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-08-03 11:43 |只看该作者 |正序浏览
碰到一个问题. 代码如下:
LINENO=1
while [ 1 ]
do
        LINE=`sed -n -e "$LINENO p" $3`
        echo "$LINE"
done < $3
echo "line number = $LINENO"


当跳出循环, LINENO值变为1. 求教如何能保留值在循环外.

论坛徽章:
0
14 [报告]
发表于 2003-08-04 04:58 |只看该作者

跳出循环,变量值消失. SOS

cs221313老大,约克读cs2031吧,呵呵。

论坛徽章:
0
13 [报告]
发表于 2003-08-03 14:35 |只看该作者

跳出循环,变量值消失. SOS

按照你的方法问题解决了. 太感谢了. 你用这个办法把重定向去掉了. 谢谢.

论坛徽章:
0
12 [报告]
发表于 2003-08-03 14:28 |只看该作者

跳出循环,变量值消失. SOS

程序的output 是字串

论坛徽章:
0
11 [报告]
发表于 2003-08-03 14:26 |只看该作者

跳出循环,变量值消失. SOS

谢谢, 我再试试, 是得. 吧 ernexp 的output 和 outputs 进行比较. 我的是bourne shell. 学校的机器是saloris 的. Thanks a gain.

论坛徽章:
0
10 [报告]
发表于 2003-08-03 14:19 |只看该作者

跳出循环,变量值消失. SOS

你的程式在我的系统上不工作!!返回值是数值还是字串?
如果是象我上面说的那样?给你一个流程,余下的你自己来吧


  1. #!/bin/sh

  2. PROC="$1"
  3. LNCOUNT=`cat $2|wc -l`
  4. curln=1

  5. while [ curln -le $LNCOUNT ];do
  6.         ln=`sed -n "${curln}p" $3`
  7.         ret="sed -n "${curln}p $2 | $PROC`"
  8.         if [ ! "X${ln}" = "X${ret}" ];then #如果结果不相同
  9.                 echo "[ ${curln} ] error: ${ret} ${ln}" #输出
  10.         fi
  11.         curln=$(($curln + 1)) #取下一行
  12. done
复制代码

论坛徽章:
0
9 [报告]
发表于 2003-08-03 13:54 |只看该作者

跳出循环,变量值消失. SOS

你就是要把file1中的每一行传给ernexp这个程式,这个程式会得出一个结果,再把这个结果同file2中对应的行进行比较。不同的话打印行号是吗?
也就是说file1和file2是两个相同的文件?

论坛徽章:
0
8 [报告]
发表于 2003-08-03 13:14 |只看该作者

跳出循环,变量值消失. SOS

input file:
H FOO + =
H FOO + ==
FOO + H ==
FOO + H =
FOO  H + =
H H + H FOO =
文件名为inputs.txt.
还有一个outputs file:
=========
Error: Invalid ERN in expression  H FOO +
RC=1
=========
Error: Invalid ERN in expression  H FOO +
RC=1
=========
Error: Invalid ERN in expression  FOO +
RC=1
=========
Error: Invalid ERN in expression  FOO +
RC=1
=========
Error: Invalid ERN in expression  FOO H +
RC=1
这2个文件和另一个UNIX 文件都是老师给的. 要我们写一个shell 文件把input的test case 给ernexp程序, 这程序会打印出结果. 然后和outputs.txt 进行比较如果某个case 不一样就打印出 case number. outputs 中的"========" 是用来分割test case 的. 下一行是结果. 在下一行是这个程序的 return value.
执行格式: tester.sh ernxep inputs.txt outputs.txt
若还是不clear. 我再补充. Thanks so much.

ernexp.jpg

14.54 KB, 下载次数: 3971

UNIX 可执行文件. 把.jpg去掉既可.

论坛徽章:
0
7 [报告]
发表于 2003-08-03 13:09 |只看该作者

跳出循环,变量值消失. SOS

TOTALLINE=`wc -l $3 | sed "s/ $3$//" | sed "s/^ //"`
这个是取第三个文件的行数吗?如果是用
TOTALLINE=`cat $3|wc -l`就可以了,还有就是为什么把它设成readonly之后以下的程式并没有使用这个变量?

论坛徽章:
0
6 [报告]
发表于 2003-08-03 13:00 |只看该作者

跳出循环,变量值消失. SOS

单看你的程式很难了解你的意图,而且你也说你的程式并不工作。

举个例子说明比较好一点儿,比如说input_file和output_file以及第一个可执行程式是一个什么样的程式。最后这个脚本的输出是什么样子的。这样才好让大伙帮你啊。
  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP