程序返回值在 shell 编程中的应用
时间:2007-07-31 来源:dorainm
大家知道我们编写一个程序,不可能就一个 main 函数,
当 main 函数调用子函数的时候,可以设置一个子函数的返回值
比如
... |
我们用 main 函数调用的时候,可以根据返回值,来判断自函数的运行情况,来决断程序的运行
int main( void ) |
例子中,通过对子函数的返回值判断,可以让程序做能阅读文件时候做的事情和无法阅读的时候的错误
这样子,程序就不是想象中的线性执行下来了
(不然,上面都无法打开文件了,下面还说要读取里面东西)
一个程序内,可以通过 子函数返回值,来控制程序的流程
但是,大家看上面文章,func返回值给 main 函数,
那么 main 函数的返回值乜?
其实,这是 shell 编程或者 批处理编程 里面非常好用的一点
因为批处理就是调用一个一个可执行程序的 main 函数 :)
如果我们写个 shell 或者 批处理,把某某文件复制到当前目录上来
然后进行添加一句话
如果文件复制失败了,那么后面添加还有什么意思吗??
批处理给人的概念,就是一堆任务,一条一条的 DOS 指令依次运行而已
其实不然,它也可以做流控制,它可以收集 copy程序的 main 函数返回值来判断下一步运行
@echo off |
先看看当前文件下的内容
D:\tools\returnvalue>dir |
有个 1.txt, 内容是 hello, dorainm
显示语法
D:\tools\returnvalue>test |
运行
D:\tools\returnvalue>test 1.txt |
显示复制成功,添加完成,
用 more 察看 temp.txt 里面的内容,的确添加了一行 i found it
运行如果输入参数是不存在的文件,看看效果
D:\tools\returnvalue>test 2.txt |
这个批处理完成了 通过判断 copy 的 main 函数的返回值来决定 批处理程序的流程
Linux 下的 shell 程序, 同样可以利用 $? 来判断上一次 的 command 的 main 返回值
实现同样效果的 linux shell
#!/bin/bash |
察看当前目录下的文件
[dorainm@dorm shell]$ ls |
运行语法
[dorainm@dorm shell]$ ./test.sh |
正确参数运行
[dorainm@dorm shell]$ ./test.sh 1.txt |
失败参数
[dorainm@dorm shell]$ ./test.sh 2.txt |
通过以上例子, 我们懂得, main 函数的返回值其实是有价值的
它通过传递给 shell中的 $? 或 cmd 中的 %errorlevel% ,
让原先的线性执行程序的 shell 或者 批处理,
实现了程序的流程控制!!
这样子, 我们的批处理或者 shell 程序
就能够实现想程序一样智能