请高手指点一下一个批处理文件的写法

好像明白点儿了。举个例子:

1)vi foo.sh
复制内容到剪贴板
代码:
#! /bin/bash
# file: foo.sh

while [ "$#" -gt 1 ]
do
    old="$1"
    new="$2"
    sed -e "s:$old:$new:g" foo.txt > /tmp/foo.txt.tmp
    cat /tmp/foo.txt.tmp > foo.txt
    cat foo.txt
    shift
done
2)chmod u+x foo.sh

3)echo 1234567890 > foo.txt

4)./foo.sh 1 2 3 4 5 6 7 8 9 0
运行结果:
2234567890
3334567890
4444567890
5555567890
6666667890
7777777890
8888888890
9999999990
0000000000

是不是你想要的效果?(这里的 foo.txt 相当于你的 lvs.com,cat 相当于你的 calibre)      
感谢版主,只是在SOLARIS下略有不同,正在调试,谢      
Solaris 没怎么用过,不过这些东西不会差很多的
祝你好运!      
版主,带有cat的两行似乎有所不同,第一行的cat象是shell里的命令cat(显示或联接文件)第二行,才是我的calibre吧??还有执行calibre lvs.com会产生一系列文件,再次感谢      
没错,第一个 cat 是用来生成 foo.txt 的,也就是你的 lvs.com
欢迎常来!      
如果SED的输入用文本文件怎么写??      
我是指用script file 而不是用命令行参数的半法,因为要替换很多次,输入起来很繁,我可以把要替换的东东做成一个LIST放在一个文件会比较方便,谢了      
参数很多吗?是否会经常改动?

如果参数不是经常变动,可以考虑直接写入 script file 中      
继续前面的例子:
1)vi foo.sh
复制内容到剪贴板
代码:
#! /bin/bash
# file: foo.sh

while [ "$#" -gt 1 ]
do
    old="$1"
    new="$2"
    sed -e "s:$old:$new:g" foo.txt > /tmp/foo.txt.tmp
    cat /tmp/foo.txt.tmp > foo.txt
    cat foo.txt
    shift
done
2)chmod u+x foo.sh

3)echo 1234567890 > foo.txt

4)echo "1 2 3 4 5 6 7 8 9 0" > arg.txt

5)./foo.sh $(cat arg.txt)
运行结果:
2234567890
3334567890
4444567890
5555567890
6666667890
7777777890
8888888890
9999999990
0000000000      
编译时的出错信息:foo.sh: [10: not found 是何故??急,谢,现在线