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

shell脚 本编程

[复制链接]

尚未签到

发表于 2018-8-24 12:26:24 | 显示全部楼层 |阅读模式
  一、shell脚本语言
  1.编程语言的分类:
  (1)根据运行方式
  编译运行:源代码 --> 编译器 (编译)--> 程序文件;
  解释运行:源代码 --> 运行时启动解释器,由解释器边解释边运行;
  (2)根据其编程过程中功能的实现是调用库还是调用外部的程序文件:
  shell脚本编程:利用系统上的命令及编程组件进行编程;
  完整编程:利用库或编程组件进行编程;
  (3)编程模型:
  过程式编程语言:以指令为中心来组织代码,数据是服务于代码;
  顺序执行、选择执行、循环执行;代表:C,bash
  面向对象的编程语言:以数据为中心来组织代码,围绕数据来组织指令;
  类(class):实例化对象,method;
  代表:Java, C++, Python
  总结:shell脚本编程是过程式编程,解释运行,依赖于外部程序文件运行;
  2.shell脚本格式和规范
  (1)第一行,顶格:给出shebang,解释器路径
  用于指明解释执行当前脚本的解释器程序文件
  常见的解释器:
  #!/bin/bash;#!/usr/bin/python;#!/usr/bin/perl
  (2)注释信息:#
  #description:;#version;#author;#date
  (3)代码注释:
  (4)缩进,适度添加空白行;
  (5)txt格式文本文档
  3.shell脚本本质:命令的堆积;
  很多命令不具有幂等性,需要用程序逻辑来判断运行条件是否满足
  4.运行脚本方法
  (1)赋予执行权限,并直接运行此程序文件;
  1)chmod +x /PATH/TO/SCRIPT_FILE
  (此处直接+x是赋予全部用户可执行权限)
  2)/PATH/TO/SCRIPT_FILE
  (2)直接运行解释器,将脚本以命令行参数传递给解释器程序;
  bash /PATH/TO/SCRIPT_FILE
  (此方法和脚本本省有无执行权限无关)
  注意:1)脚本中的空白行会被解释器忽略;
  2)空白行表示:加一行echo,则显示为空白行
  3)注释行:除shebang,余下所有以#开头的行,都会被视作)注释行而被忽略
  4)shell脚本的运行是通过运行一个子shell进程实现的;



  二、算数运算
  1.算数符号:   +,-,*,/,  **, %
  2.加法运算格式
  (1) let  VAR=算术运算表达式
  (2) VAR=$[算数运算表达式]
  (3) VAR=$((算数运算表达式))
  (4) expr命令 :VAR=$(expr $ARG1 $OP $ARG2)
  注意:乘法符号(*)在有些场景中需要使用转义符,防止和通配符、正则表达式冲突
  3.增强型赋值:变量做某种算术运算后回存至此变量中
(1)let i=$i+#    let i+=#
  +=,-=,*=, /=, %=
  (2)自增
  VAR=$[$VAR+1];let  VAR+=1;let  VAR++
  (3)自减
  VAR=$[$VAR-1];let  VAR-=1;let  VAR--
  三、传递参数
  1.位置参数变量
  (1)# myscript.sh  argu1 argu2
  引用方式:$1,  $2, ..., ${10}, ${11}, ...
  $1:第一个输入参数
  $2第二个传递的参数
  当两位数时要用括号括起来${10}, ${11}, ..
  (2)轮替机制:调用n个位置变量
  shift   [n]:位置参数轮替;每次剔除n个,默认为1个
  2.特殊变量
  $0 脚本本身路径
  $#脚本参数的个数
  $*显示所有参数,各参数读成多个独立字符串
  $@显示所有参数,各参数读成一个完整的字符串形式
  3.read:用户交互,通过键盘输入数据,从而完成变量赋值操作
  read [option]... [变量name ...]
  -p 'PROMPT'  显示提示信息
  -t TIMEOUT   超出时间提前结束
  time out and return failure if a complete line of input is not read withint TIMEOUT seconds.
  注意:一般输入以空格作为分隔符,但时当输入数量大于变量是,最后多余的全部赋予最后一个变量
DSC0000.jpg

  四、条件测试
  1.条件测试:判断某需求是否满足,需要由测试机制来实现
  2.测试表达式编写语法
  (1)执行命令,并利用命令状态返回值来判断;
  0:成功
  1-255:失败
  (2)测试表达式
  test  EXPRESSION
  [ EXPRESSION ]
  ` EXPRESSION `
  注意:EXPRESSION两端必须有空白字符,否则为语法错误;
  3.bash的测试类型
  (1)数值测试:数值比较,双目测试
  -eq:是否等于; [ $num1 -eq $num2 ]
  -ne:是否不等于;
  -gt:是否大于;
  -ge:是否大于等于;
  -lt:是否小于;
  -le:是否小于等于;
  (2)字符串测试:双目测试
  ==:是否等于;
  >:是否大于;
  

运维网声明 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-555970-1-1.html 上篇帖子: linux shell date 下篇帖子: Linux之shell脚本(1)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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