加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 服务器 > 搭建环境 > Windows > 正文

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

发布时间:2019-06-11 20:14:56 所属栏目:Windows 来源:守望先生
导读:副标题#e# 前言 在linux下使用shell编程常常能够极大简化我们的工作。而下面这些必备的知识你是否都掌握了呢? 入参和默认变量 对于shell脚本而言,有些内容是专门用于处理参数的,它们都有特定的含义,例如: /home/shouwang/test.shpara1para2para3 $0$1$

通常函数的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` 

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读