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

shell脚本之变量、变量类型、条件测试、算术运算、及特殊变量

[复制链接]

尚未签到

发表于 2018-8-30 07:00:15 | 显示全部楼层 |阅读模式
  bash脚本编程之变量、变量类型、条件测试、算术运算、及特殊变量
  一、学习目的
  1、了解bash脚本的变量类型及变量的使用
  2、了解bash中条件测试的种类及如何在bash中实现条件的判断
  3、学会在bash中做算术运算
  4、了解特殊变量的使用
  二、学习内容
  1)、 ①、bash的变量类型: 环境变量 、本地变量、局部变量、位置变量、特殊变量
  环境变量: export VALUENAME = VALUE 作用领域是当前的shell进程及其子进程
  本地变量: VALUENAME= VALUE 作用领域为整个bash的进程
  局部变量;local VALUENAME= VALUE 作用领域是当前的代码段
  位置变量:$1 、$2、$3、$4... 指引用脚本后面的第几个参数
  特殊变量:
  $?:上一个命令执行状态返回值
  $#:查询参数的个数
  $*:显示参数的列表
  $@:显示参数的列表
  ②、 如何引用变量:
  ${VALUENAME}  花括号大多数可以省略
  ③、变量名称的命名规则:
  #只能包含字母,数字,下划线,并且不能以数字开头
  #不应该跟系统中的已有的环境变量名重名
  #尽量做到见名思义
  -----------------------------------------------------------------------------
  2)、①、bash中常用的条件测试有三种: 整数测试、字符串测试、文件测试
  整数测试:
  -eq : 测试两个整数是否相等  [ $A -eq $ B ] ;相等为真
  -ne : 测试两个整数是否不相等 ;不等为真
  -gt :测试一个整数是否大于另一个整数;大于为真
  -lt: 测试一个整数是否小于另一个整数;小于为真
  -ge:测试一个整数是否大于等于另一个整数;大于等于为真
  -le: 测试一个整数是否小于等于另外一个整数;小于等于为真
  字符串测试:
  str1 = str2 :  当两个字串相等时为真str1
  != str2:  当两个字串不等时为真
  -n str1:  当字符串的长度大于0时为真
  -z str1:  当字符串的长度为0时为真
  -n str:  当字符串为非空时为真
  文件测试:
  -e FILE :测试文件是否存在,存在为真   [ -e /etc/passwd ]
  -f FILE : 测试文件是否为普通文件, 为普通文件为真
  -d FILE : 测试指定的路径是否为目录 ;为目录为真
  -r FILE : 测试当前的用户对指定的文件是否有读取权限
  -x FILE : 测试当前的用户对指定的文件是否有执行权限
  -w FILE : 测试当前的用户对指定的文件是否有写权限
  ②、条件测试的表达式:
  [ expression ]
  ` expression `
  test expression
  ③、条件判断
  -- 关于命令间的逻辑关系的条件判断:
  逻辑与: expression1 && expression2
  第一个条件为假,则不执行第二个条件;第一个条件为真则判断第二个条件,结果为第二个条件。
  逻辑或: expression1 || expression2
  第一个条件为真则不执行第二个条件
  第一个条件为假则继续执行第二个条件
  --关于if的控制结构的条件判断:
  单分支: if 判断条件 ;then
  statement1
  ....
  fi
  双分支: if 判断条件 ;then
  statement1
  statement2
  .....
  else
  statement1
  ...
  fi
  双分支:  if 判断条件1 ;then
  statement1
  ...
  elif  判断条件2 ; then
  statement1
  ....
  elif 判断条件3 ; then
  statement1
  ...
  ....
  fi
  ---------------------------------------------------------------------------
  3)、 在shell中如何进行算术运算: 如有两个变量:A=3 ,B=4
  let 算术运算表达式
  let   C= $A + $B
  算术运算表达式]
  C=[$A+$B]
  ((算术运算表达式))
  C=(($A +$B))
  三、巩固练习,完成以下的脚本
  练习:写一个脚本,完成以下任务
  1、添加5个用户, user1,..., user5;如果用户存在则提示“username have existed”,否则                添加用户并显示“username have added” ;
  2、每个用户的密码同用户名,而且要求,添加密码完成后不显示passwd命令的执行结果信息;
  3、每个用户添加完成后,都要显示用户某某已经成功添加;
DSC0000.jpg

DSC0001.jpg

  练习:如果/etc/passwd文件的行数大于100,就显示好大的文件;
DSC0002.jpg

DSC0003.jpg

  练习:如果用户user8不存在,就添加用户user6
DSC0004.jpg

DSC0005.jpg

  练习,写一个脚本,完成以下要求:
  给定一个用户:
  1、如果其UID为0,就显示此为管理员;
  2、否则,就显示其为普通用户;
DSC0006.jpg

DSC0007.jpg

DSC0008.jpg

DSC0009.jpg

  练习:写一个脚本
  判断当前系统上是否有用户的默认shell为bash;
  如果有,就显示有多少个这类用户;否则,就显示没有这类用户;
DSC00010.jpg

DSC00011.jpg

  练习:写一个脚本
  给定一个用户,判断其UID与GID是否一样
  如果一样,就显示此用户为“good guy”;否则,就显示此用户为“bad guy”。
DSC00012.jpg

DSC00013.jpg

  练习:写一个脚本
  判定命令历史中历史命令的总条目是否大于1000;如果大于,则显示“Some command will gone.”;否则显示“OK”。
DSC00014.jpg

DSC00015.jpg

  练习:写一个脚本
  给定一个文件/etc/passwd:
  如果是一个普通文件,就显示之;
  如果是一个目录,亦显示之;
  否则,此为无法识别之文件;
DSC00016.jpg

DSC00017.jpg

DSC00018.jpg

DSC00019.jpg

  练习:写一脚本
  能接受一个参数(文件路径)
  判定:此参数如果是一个存在的文件,就显示“OK.”;否则就显示"No such file."
DSC00020.jpg

DSC00021.jpg

  练习:写一个脚本
  给脚本传递两个参数(整数);
  显示此两者之和,之乘积;
DSC00022.jpg

DSC00023.jpg



运维网声明 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-558602-1-1.html 上篇帖子: 一个脚本实例浅析shell脚本中$@与$*的区别 下篇帖子: shell编程(十五)--- while特殊用法和函数
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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