设为首页 收藏本站
查看: 781|回复: 0

shell脚本学习与总结

[复制链接]

尚未签到

发表于 2018-8-24 07:52:19 | 显示全部楼层 |阅读模式
  shell脚本学习总结,东西很多,供初学者参考.

  •   shell脚本是区分大小写的。
  2.Unix特殊字符有: ( ; $ ? & * () [] ` ‘ “ + 使用其时要进行转义()
  3.Shell的注释以#开头
  4.函数的定义
  Function fuction_name(){
  Command to execute
  }
  调用时直接用function_name.
  5.控制结构
  1)If...then语句
  If [ test_command ]
  Then
  Commands
  fi
  2)If...then...else语句
  If [ test_command ]
  Then
  Commands
  Else
  commands
  fi
  3)If...then...elif...then...(else)语句
  If [ test_command ]
  Then
  Commands
  Elif [ test_command ]
  Then
  Commands
  Else
  Commands
  Fi
  4)for ... In语句
  For loop_varible in argument_list
  Do
  Commands
  done
  5)while语句
  While test_command_is_true
  Do
  Commands
  Done
  6)until 语句
  Until test_command_is_true
  Do
  Commands
  Done
  7)case语句
  Case $variable in
  Match_1)
  Commands_for_1
  Match_2)
  Commands_for_2
  *) #option for other values
  Commands_for_no_match
  esac
  6.break、continue、exit和return语句
  Break跳出整个循环体,然后执行循环体外接下来的代码;
  Continue 结束本次循环,继续下次循环;
  Exit 退出整个脚本,一般在其后加入一个整数(如exit 0),作为返回代码发送给系统;
  Return 用于在函数中返回数据,或返回一个结果给调用函数
  7.here文档
  用于将输入重定向到某个交互式shell脚本或程序,而不需要用户介入。
  Program_name &1 > /dev/null
  输出到系统指定的控制台: > /dev/console
  21.解析命令行参数getopts
  Getopts optionstring VARIABLE
  Optionstring 是所需的各种参数,用冒号隔开,如果不需要参数,则冒号可以省略。如果optionstring
  前有一个冒号,则任何未匹配到时会在VARIBLE中加载一个?号
  使用getopts的作用是解析出参数,然后作用此参数做不同的操作。如:
  While getopts :s:m:h:d:p: TM
  Do
  Case $TM in
  S)
  Do something
  M)
  Do something
  .
  .
  .
  ?)
  Exit 1
  Esac
  22.逐行处理文件
  While read LINE
  Do
  Echo “$LINE”
  Done ”是输出重定向符。“”只存放正确的信息,“2>”存放错误的信息,每次存入前都会把之前文件内容清空再放入
  如:ls /usr > /tmp/aaa   把/usr目录下的所有文件和文件夹名称信息放到期/tmp/aaa文件中。
  如:ls /test 2> /tmp/aaa  如果没有/test文件夹,这时就会发生错误,那么2>就会把错误信息存入aaa
  文件中。
  “>”能创建新文件,如:>hello.java
  “>”能清空一个文件 如hello.java文件中有内容,我再>hello.java这时,hello.java内容清空“>>”双大于号在一起就变成了追加功能,在之前的文件内容后面追加内容。如:cat /tmp/sh >> /tmp/aaa
  把/tmp/sh目录中的所有文件和目录信息追加到aaa文件中。aaa文件之前的内容不会被清除。cat >
  hello.java时,能在屏幕上输入很多的内容,按ctrl+D时就会退出。再cat hello.java时
  刚才输入的内容,全在hello.java文件中11,输入重定向如:cat > a.txt  $SYSPROFILE  done
  这里用*代表当前目录,列出的是所有的文件和文件夹的名称,在这里,文件夹
  和文件你是分不出来的,如果你需要,你应该用if [-d ${file}]来做一下判断。
  ----------------------- Page 5-----------------------
  对于文件遍历,更有趣的是,你可以在 “in” 后面接上多个表达式。也就是说,
  你可以一次在遍历多个目录。
  下面这段代码能把当前目录下go 文件夹和do 文件夹里的文件复制到fo 文件夹
  下
  复制代码代码如下:
  #!/bin/bash
  for args in ./go/* ./do/*
  do
  cp ${args} ./fo
  echo "copying ${args} to ./fo/${args}"
  done
  



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-555716-1-1.html 上篇帖子: Shell数组脚本练习 下篇帖子: SHELL从APNIC获取IP地址
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表