设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 手机 数据 公司
当前位置: 首页 > 服务器 > 搭建环境 > Windows > 正文

这些必备的Linux shell知识你都掌握了吗(3)

发布时间:2019-06-10 20:47 所属栏目:117 来源:守望先生
导读:通常函数的return返回值只支持0-255,因此想要获得返回值,可以通过下面的方式。 functionmyfunc(){ localmyresult='somevalue' echo$myresult } val=$(myfunc)#val的值为somevalue 通过return的方式适用于判断函数

通常函数的return返回值只支持0-255,因此想要获得返回值,可以通过下面的方式。

  1. function myfunc() {  
  2.     local myresult='some value'  
  3.     echo $myresult  
  4. }  
  5. val=$(myfunc)  #val的值为some value 

通过return的方式适用于判断函数的执行是否成功:

  1. function myfunc() {  
  2.     #do something  
  3.     return 0  
  4. }  
  5. if myfunc;then  
  6.     echo "success"  
  7. else  
  8.     echo "failed"  
  9. fi 

注释

shell通过#来注释一行内容,前面我们已经看到过了:

  1. #!/bin/bash  
  2. # 这是一行注释  
  3. :'  
  4. 这是  
  5. 多行  
  6. 注释  
  7. '  
  8. ls  
  9. :<<EOF  
  10. 这也可以  
  11. 达到  
  12. 多行注释  
  13. 的目的  
  14. EOF 

日志保存

脚本执行后免不了要记录日志,最常用的方法就是重定向。以下面的脚本为例:

  1. #!/bin/bash  
  2. #test.sh  
  3. lll  #这个命令是没有的,因此会报错  
  4. date 

方式一,将标准输出保存到文件中,打印标准错误:

  1. ./test.sh > log.dat 

这种情况下,如果命令执行出错,错误将会打印到控制台。所以如果你在程序中调用,这样将不会讲错误信息保存在日志中。

方式二,标准输出和标准错误都保存到日志文件中:

  1. ./test.sh > log.dat 2>&1 

2>&1的含义可以参考《如何理解linuxshell中的2>&1》

方式三,保存日志文件的同时,也输出到控制台:

  1. ./test.sh |tee log.dat 

脚本执行

最常见的执行方式前面已经看到了:

  1. ./test.sh 

其它执行方式:

  1. sh test.sh  #在子进程中执行  
  2. sh -x test.sh #会在终端打印执行到命令,适合调试  
  3. source test.sh #test.sh在父进程中执行  
  4. . test.sh   #不需要赋予执行权限,临时执行 

脚本退出码

很多时候我们需要获取脚本的执行结果,即退出状态,通常0表示执行成功,而非0表示失败。为了获得退出码,我们需要使用exit。例如:

  1. #!/bin/bash  
  2. function myfun()  
  3. {  
  4.     if [ $# -lt 2 ]  
  5.     then  
  6.        echo "para num error"  
  7.        exit 1  
  8.     fi  
  9.     echo "ok"  
  10.     exit 2  
  11. }  
  12. if [ $# -lt 1 ]  
  13. then  
  14.    echo "para num error"  
  15.     exit 1  
  16. fi  
  17. returnVal=`myfun aa`  
  18. echo "end shell"  
  19. exit 0 

这里需要特别注意的一点是,使用

  1. returnVal=`myfun aa` 

这样的句子执行函数,即便函数里面有exit,它也不会退出脚本执行,而只是会退出该函数,这是因为exit是退出当前进程,而这种方式执行函数,相当于fork了一个子进程,因此不会退出当前脚本。最终结果就会看到,无论你的函数参数是什么最后end shell都会打印。

  1. ./test.sh;echo $?  

总结

以上就是shell编程最基本也是最关键的内容。当然这并非全部,例如数组,字典,参数处理等都没有详细介绍,由于篇幅有限,将会在后面的文章中进行详细介绍。学好shell,解放你的双手。

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读