急啊!各位大侠先帮忙看一下,这个shell程序怎么做哇!

sh/bash/dash/ksh/zsh等Shell脚本
回复
wangjingchu
帖子: 25
注册时间: 2008-05-17 9:56
送出感谢: 0
接收感谢: 0
联系:

急啊!各位大侠先帮忙看一下,这个shell程序怎么做哇!

#1

帖子 wangjingchu » 2010-12-25 9:33

原文件是这样的
想在
a: begin后面插入 //case 1
b: begin后面插入//case 2
...
一直到最后一个x:begin后插入//case n
这个应该怎么实现啊
原文如下

代码: 全选

case (stato)
    a: begin
	 if (line1 && line2) stato=f;
	 else		     stato=b;
	 outp<=line1^line2;
	 overflw<=0;
       end
    e: begin
	 if (line1 && line2) stato=f;
	 else		     stato=b;
	 outp<=line1^line2;
	 overflw<=1;
       end
    b: begin
	 if (line1 && line2) stato=g;
         else		     stato=c;
	 outp<=line1^line2;
	 overflw<=0;
       end
上次由 wangjingchu 在 2010-12-25 13:23,总共编辑 1 次。
头像
IDRI
帖子: 476
注册时间: 2010-07-02 21:47
送出感谢: 0
接收感谢: 0

Re: 各位大侠先帮忙看一下,这个shell循环有什么问题吧~

#2

帖子 IDRI » 2010-12-25 10:17

感觉这只是你代码的一部份,我没看太懂。不知道你说的是什么问题。
有几个问题我还是看出来了。
1.在ubuntu下在shell代码里不能用let,当然如果你的第一行不是#! /bin/sh,可以忽视
2.$count=$count+1,最好写成count=$count + 1.
我也是新手,望有高手来指导一二 :em03
对系统:更加了解; 对软件:更强,更新,更有趣

ubuntu--arch--gentoo

vim(latex-suit),tex(xelatex,metapost),zim,chromium,virtualbox,awk......
wangjingchu
帖子: 25
注册时间: 2008-05-17 9:56
送出感谢: 0
接收感谢: 0
联系:

Re: 各位大侠先帮忙看一下,这个shell循环有什么问题吧~

#3

帖子 wangjingchu » 2010-12-25 10:29

IDRI 写了:感觉这只是你代码的一部份,我没看太懂。不知道你说的是什么问题。
有几个问题我还是看出来了。
1.在ubuntu下在shell代码里不能用let,当然如果你的第一行不是#! /bin/sh,可以忽视
2.$count=$count+1,最好写成count=$count + 1.
我也是新手,望有高手来指导一二 :em03
看了老师的课件做也是出不来

代码: 全选

str=`sed -n ':' b01.v`
#循环,以便连续插入
count=1
while[$count < $str]
do     
sed -i -e '/Case $count/i\
//Case $count+1' b01.v
let count=$count+1
done
那个do里的 $count+1 是不是有问题啊
头像
trigger
帖子: 1585
注册时间: 2006-10-25 18:08
送出感谢: 0
接收感谢: 0

Re: 各位大侠先帮忙看一下,这个shell循环有什么问题吧~

#4

帖子 trigger » 2010-12-25 10:48

谁说不能用let?语法错误当然不行:
[bash]#!/bin/bash
#sh010.sh
max=50 #变量max赋值
for i in `seq $max`
do
let max=max-i
(($max<0))&&break
echo $i $max
done[/bash]
./sh010.sh
1 49
2 47
3 44
4 40
5 35
6 29
7 22
8 14
9 5
楼主真是一派胡言,真可谓:“两个黄鹂鸣翠柳,不知所云;一行白鹭上青天,不知所止“。本来不想和你辩论,今天气愤不过,和你理论一番。我国宪法写得清清楚楚:“一夜夫妻百日恩,七楼以上才有电梯”。这个想必你知道,既然知道,你就不能断章取义,就算是天气预报,它还有不准的时候呢!!!再者说了,那中国银行也不是你一家开的。人家马拉多纳都结婚了,你还拿着粮票顶什么用呢。真是滑天下之大稽。前些日子,全国人大刚刚开过会,郑重声明:“中国不搞多party制,存栏母猪给补贴”。多好的事呢,楞让你这号人给搅混了。
wangjingchu
帖子: 25
注册时间: 2008-05-17 9:56
送出感谢: 0
接收感谢: 0
联系:

Re: 各位大侠先帮忙看一下,这个shell循环有什么问题吧~

#5

帖子 wangjingchu » 2010-12-25 11:17

trigger 写了:谁说不能用let?语法错误当然不行:
[bash]#!/bin/bash
#sh010.sh
max=50 #变量max赋值
for i in `seq $max`
do
let max=max-i
(($max<0))&&break
echo $i $max
done[/bash]
./sh010.sh
1 49
2 47
3 44
4 40
5 35
6 29
7 22
8 14
9 5
谢谢了, :em02 高人哇
wangjingchu
帖子: 25
注册时间: 2008-05-17 9:56
送出感谢: 0
接收感谢: 0
联系:

Re: 急啊!各位大侠先帮忙看一下,这个shell程序怎么做哇!

#6

帖子 wangjingchu » 2010-12-25 13:24

:em20 :em20 自己鼓捣鼓捣不出来啊
sugarbyheart
帖子: 2
注册时间: 2010-03-14 7:50
送出感谢: 0
接收感谢: 0

Re: 急啊!各位大侠先帮忙看一下,这个shell程序怎么做哇!

#7

帖子 sugarbyheart » 2011-01-02 19:15

trigger的例子真的很有趣~
MaskRay
帖子: 61
注册时间: 2010-04-29 22:00
系统: Gentoo Linux ~amd64
送出感谢: 0
接收感谢: 6 次
联系:

Re: 急啊!各位大侠先帮忙看一下,这个shell程序怎么做哇!

#8

帖子 MaskRay » 2011-01-02 20:43

代码: 全选

#!/usr/bin/expect

spawn -noecho -open [open 所需编辑的文件 r]
log_user 0
while 1 {
    expect {
        -re "\[^\n]*\n" {
            if {[regexp "(.): begin" $expect_out(0,string) ignore c] == 1} {
                send_user "[string trimright $expect_out(0,string) \n] //case [expr [scan $c %c] - 96]\n"
            } else {
                send_user $expect_out(0,string)
            }
        }
        eof break
    }
}
wait
回复

回到 “Shell脚本”