通常函数的return返回值只支持0-255,因此想要获得返回值,可以通过下面的方式。
- function myfunc() {
- local myresult='some value'
- echo $myresult
- }
- val=$(myfunc) #val的值为some value
通过return的方式适用于判断函数的执行是否成功:
- function myfunc() {
- #do something
- return 0
- }
- if myfunc;then
- echo "success"
- else
- echo "failed"
- fi
注释
shell通过#来注释一行内容,前面我们已经看到过了:
- #!/bin/bash
- # 这是一行注释
- :'
- 这是
- 多行
- 注释
- '
- ls
- :<<EOF
- 这也可以
- 达到
- 多行注释
- 的目的
- EOF
日志保存
脚本执行后免不了要记录日志,最常用的方法就是重定向。以下面的脚本为例:
- #!/bin/bash
- #test.sh
- lll #这个命令是没有的,因此会报错
- date
方式一,将标准输出保存到文件中,打印标准错误:
- ./test.sh > log.dat
这种情况下,如果命令执行出错,错误将会打印到控制台。所以如果你在程序中调用,这样将不会讲错误信息保存在日志中。
方式二,标准输出和标准错误都保存到日志文件中:
- ./test.sh > log.dat 2>&1
2>&1的含义可以参考《如何理解linuxshell中的2>&1》
方式三,保存日志文件的同时,也输出到控制台:
- ./test.sh |tee log.dat
脚本执行
最常见的执行方式前面已经看到了:
- ./test.sh
其它执行方式:
- sh test.sh #在子进程中执行
- sh -x test.sh #会在终端打印执行到命令,适合调试
- source test.sh #test.sh在父进程中执行
- . test.sh #不需要赋予执行权限,临时执行
脚本退出码
很多时候我们需要获取脚本的执行结果,即退出状态,通常0表示执行成功,而非0表示失败。为了获得退出码,我们需要使用exit。例如:
- #!/bin/bash
- function myfun()
- {
- if [ $# -lt 2 ]
- then
- echo "para num error"
- exit 1
- fi
- echo "ok"
- exit 2
- }
- if [ $# -lt 1 ]
- then
- echo "para num error"
- exit 1
- fi
- returnVal=`myfun aa`
- echo "end shell"
- exit 0
这里需要特别注意的一点是,使用
- returnVal=`myfun aa`
(编辑:我爱制作网_潮州站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|