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

SHELL脚本之BASH基础

[复制链接]

尚未签到

发表于 2018-8-30 06:24:20 | 显示全部楼层 |阅读模式
  以前我也培训过RHCE,并且已经获得过证书。但是过了差不多一年,学的很多Linux知识点都忘记了或者是不清楚了,现在决定将自己归零。从基础开始学习,跟着马哥的视频,一步一步扎实自己,提升自己。本节主要将了解一下BASH基础方面的只是。
  首先来看一下BASH中的变量类型:
  BASH变量类型
  BASH变量的类型可以分为四种:环境变量、本地变量(局部变量)、位置变量和特殊变量。
  其中本地变量(VARNAME=VALUE)的作用域是整个的BASH进程。
  局部变量(local VARNAME=VALUE)的作用域为当前的代码段。
  环境变量的作用域为当前shell进程以及其子进程(定义方式要用关键词“export”:export VARNAME=value)。这里要注意一下脚本在执行时会启动一个子shell进程:1.命令行启动的脚本会继承当前shell的环境变量;2.系统自动执行的脚本(即非命令行启动)就需要自我定义需要各环境变量。
  位置变量:$1,$2...等等
  特殊变量:就是系统用来表示特定用法的,例如$?(上一个命令的执行状态返回值)等。
  程序执行结果
  程序执行,可能有两类返回值(程序状态返回码):
  0:正常执行(执行成功)
  1-255:错误执行,其中1,2,127是系统预留的错误代码。
  输出重定向
  >:将结果输出到一个文件中(如果有内容,则覆盖);
  >>:将结果追加到一个文件中(保留原来的文件内容,不覆盖);
  2>:将错误的信息输出到文件;
  2>>:将执行输出的错误信息追加到文件
  &>:将执行命令所有的输出信息输出到文件(包括正常输出的结果和错误的信息都输出到文件)。
  撤销变量
  撤销变量很简单,就是unset VARNAME就搞定(其实定义变量的时候已经隐藏了set命令,所以撤销的话用unset就不难理解了)。
  查看当前shell中变量
  用set就能轻松完成,不过这里面包括环境变量和本地变量。
  查看当前shell中的环境变量
  printenv
  env
  export
  三条命令都用来查看当前shell里面的环境变量。
  引用变量
  要用“$”来引用变量,${VARNAME}
  BASH中的条件判断
  条件测试类型:整数测试、字符测试和文件测试三种。
  条件测试的表达式:[ expression ] 或者 ` expression ` 或者 test expression三种。
  整数测试中的比较:
  -eq:测试两个整数是否相等,相等为真:比如$A -eq $B。
  -ne:测试不相等。
  -gt:测试一个数是否大于另一个数:大于为真,否则为假。
  -lt:小于为真,反之为假。
  -ge:大于或者等于。
  -le:小于或者等于。
  SHELL中的命令逻辑关系
  逻辑与: && (前面一个命令执行成功,后面才会执行)
  逻辑或: ||  (前面一个命令执行失败,后面才会执行)
  逻辑非: !  (命令结果的去反)
  (这里列出实例一个:判断用户user1是否存在,如果在就显示信息,否则,添加用户):
  id user1 && echo "user1 exists."" || useradd user1.
  变量名称
  1.只能包含字母、数字和下划线,并且不能数字开头;
  2.不应该跟系统中已有的环境变量重名;
  3.最好做到见名知义。
  条件判断,控制结构
  单分支的if语句
  if 判断条件; then  (then如果和if在同一行,if条件后面必须要分号)
  statement1
  statement2
  ...
  fi
  双分支的if语句
  if 判断条件; then
  statement1
  statement2
  ...
  else
  statement3
  statement4
  ...
  fi
  在最后附上一个实例,包含上面所讲的内容:
  写一个脚本:给定一个用户,判断其UID与GID是否一样
  如果一样,就显示此用户为“good guy”,否则,就显示此用户为“bad guy”
  #!/bin/bash
  USERNAME=user1
  USERID=`id -u $USERNAME`
  GROUPID=`id -g $USERNAME`
  if [ $USERID -eq $GROUPID ]; then
  echo "good guy"
  else
  echo "bad guy"
  fi
  “一个人不能对自己太好,如果你对自己太好了,永远不会知道自己的能力有多大”
  “尤其是男人,要对自己狠点,天天学习一两分钟就说累了,那是不行的”
  “一个人不能有自怜的情绪,天天感叹自己的出身和能力,怨天尤人,这是要绝对不允许的”


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

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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