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

6.1 shell编程4-IAR相关问题

[复制链接]

尚未签到

发表于 2018-8-20 12:01:11 | 显示全部楼层 |阅读模式
  6.1
  给定一个用户,判断其UID和GID是否一样 "^$USERNAME\>"(行首第一个单词)
  如果一样,就显示此用户为"good guy";否则,就显示此用户为"bad guy"
  #!/bin/bash
  #
  USERNAME =user1
  if !grep "^$USERNAME\>" /etc/passwd &> /dev/null;then 用户不存在
  echo "No such user: $USERNAME."
  exit 1
  fi
  USERID = `id -u $USERNAME`
  GROUPID =`id -g $USERNAME`
  if[ $USERID -eq $GROUPID ];then
  echo "good guy"
  else
  echo "bad guy"
  fi
  exit: 退出脚本
  exit #(#代表数字)
  bash中常用的条件测试三种
  -gt
  -le
  -ne
  -ge
  -lt
  -eq               非0值都是假
  --------------------只有上面才能用[],其他表达式中不能出现[]
  INT1 = 63
  INT2 = 77
  [ $INT1 -eq $INT2 ]
  [[ $INT1 -eq $INT2 ]]
  TEST $INT1 -eq $INT2
  if [ `grep "^$USENAME\>" /etc/passwd | cut -d: -f3` -eq 0 ];then 对
  if [ `grep "^$USENAME\>" /etc/passwd ` -eq 0 ];then 错(前面是一行)
  测试方法
  [ expression ]  bash的命令
  ` expression ` bash关键字
  test expression
  文件测试:
  -e FILE:测试一个文件是否存在
  -f FILE:测试文件是否为普通文件
  -d FILE: 测试指定路径是否为目录的
  -r FILE: 测试当前用户对指定文件是否有读取权限
  -w
  -x FILE
  [ -e /etc/initttab ]
  [ -x /etc/rc.d/rc.sysinit ]
  练习:写一个脚本
  给定一个文件,比如/etc/inittab
  判断这个文件中是否有空白行
  如果有,则显示其空白行数,否则,显示没有空白行
  #!/bin/bash
  FILE = /etc/inittab
  if [! -e $FILE ];then
  echo "No $FILE."
  exit 8
  fi
  if grep "^$" $FILE &> /dev/null;then
  echo "Total blank lines: `grep "^$" $FILE | wc -l`."
  else
  echo "No blank line."
  fi
  圆整,丢弃小数点后的内容
  expr命令一般用于整数值
  #expr argument operator argument
  练习:编写一个脚本
  给定一个用户,获取其密码警告期限:
  而后判断用户最近一次修改密码时间距今天是否已经小于警告期限
  提示:算术运算的方法$[$A-$B]:表示变量A的值减去变量B的值的结果
  如果小于,则显示"Warning":否则,就显示"OK"
  #!/bin/bash
  #
  W=`grep "student" /etc/shadow | cut -d: -f6`
  S=`date +%s`
  T=`expr $S/86400`
  L=`grep "^student" /etc/shadow | cut -d: -f5`
  N=`grep "^student" /etc/shadow | cut -d: -f3`
  SY=$[$L-$[$T-$N]]
  if [ $SY -lt $W ];then
  echo 'Worning'
  else
  echo 'OK'
  fi
  练习:写一个脚本
  判读命令历史中历史命令的总条目是否大于1000;如果大于,则显示
  "Some command will gone.";否则显示"ok"
  history 当前显示缓冲区中的条数(会大于1000)
  $HISTSIZE  都只显示1000
  $HISTFILESIZE  都只显示1000
  history | tail -l | cut -d' ' -f1 由于前面有一个空格,取不出条数,当取第二个字段
  history | tail -l | cut -d' ' -f2
  #!/bin/bash
  #
  COUNT = history | tail -l | cut -d' ' -f2
  if $COUNT -gt 1000 ;then
  echo "Some command will gone."
  else
  echo "ok"
  fi
  多分支的if语句
  if 判断条件1;then
  statement1
  ...
  elif  判断条件2;then
  statement2
  ...
  elif  判断条件3;then
  statement3
  ...
  else 判断条件4;then
  statement4
  ...
  fi
  #!/bin/bash
  #
  FILE =/etc/inittab
  if [ -e $FILE ];then
  echo "OK"
  else
  echo "No such file"
  fi
  测试脚本是否有语法错误
  bash -n filetest.sh
  bash -x 脚本:单步执行
  给定一个文件,如果是一个普通文件,就显示之
  如果是一个目录,亦显示之
  否则,此为无法识别之文件
  filetest2.sh
  #!/bin/bash
  #
  FILE =/etc/rc.d/rc.sysinit
  if [ ! -e $FILE ];then
  echo "NO such file"
  exit 6
  fi
  if [ -f $FILE ];then
  echo "Common file"
  elif [ -d $FILE ];then
  echo "Directory"
  else
  echo "Unkown."
  fi
  定义脚本退出状态码
  如果脚本没有明确定义退出状态码,那么,最后执行的一条命令
  的退出码即为脚本的退出状态码
  bash变量的类型:
  本地变量(局部变量) 当前shell进程
  环境变量 当前shell进程及其子进程
  位置变量:$1 $2 ...
  shift(踢掉一个位置值)默认踢1个
  shift [n]踢掉n个
  特殊变量 $?
  $#:参数的个数
  $*:参数列表
  $@:参数列表
  ./filetest.sh /etc/fstab /etc/inittab
  $1:/etc/fstab
  $2:/etc/inittab
  练习:写一个脚本
  能接受一个参数(文件路径)
  判定:此参数如果是一个存在的文件,就显示OK ,否则显示No such file
  #!/bin/bash
  #
  echo $#
  echo $*
  echo $@
  if[ $# -lt 1 ];then
  echo "Usage: ./filetest3.sh ARG1 [ARG2 ...]"
  if [ -e $1 ];then
  echo "ok"
  else
  echo "No such file"
  fi
  练习:写一个脚本
  给脚本传递两个参数(整数)
  显示此两个参数之和,之乘积
  #!/bin/bash
  #
  if [ $# -lt 2 ];then
  echo "Usage: cac1.sh ARG1 ARG2"
  exit
  fi
  echo "The sum is : $[$1 + $2]."
  echo "The prod is : $[$1 * $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.iyunv.com/thread-554261-1-1.html 上篇帖子: shell-10-数组 下篇帖子: shell 安装lamp
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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