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

[经验分享] linux命令:if语句练习

[复制链接]

尚未签到

发表于 2018-5-19 08:54:30 | 显示全部楼层 |阅读模式
  1、练习:写一个脚本
       判断当前系统上是否有用户的默认shell为bash;
       如果有,就显示有多少个这类用户,且显示其中一个用户名称;
       否则,就显示没有这类用户;
  #!/bin/bash
  # program
  #  练习使用if语句判断默认shell
  # history  level1 2016-10-19-14:00
  PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bash
  export PATH
  grep "\<bash$" /etc/passwd &> /dev/null
  RESULT=`echo $?`
  if [ $RESULT -eq 0 ] ; then
  BASHIN=`grep "\<bash$" /etc/passwd | head -1 | cut -d: -f1`
  echo "The number of bash users are `grep "\<bash$" /etc/passwd | wc -l`"
  echo "the one of is $BASHIN."
  else
  echo "no such user"
  fi
  提示:“引用”一个命令的执行结果,要使用命令引用;比如: RESAULTS=`wc -l /etc/passwd | cut -d: -f1`;
        使用一个命令的执行状态结果,要直接执行此命令,一定不能引用;比如: if id user1一句中的id命令就一定不能加引号;
           如果想把一个命令的执行结果赋值给某变量,要使用命令引用,比如USERID=`id -u user1`;
        如果想把一个命令的执行状态结果保存下来,并作为命令执行成功与否的判断条件,则需要先执行此命令,而后引用其状态结果,如
                id -u user1
                RETVAL=$?
                此句绝对不可以写为RETVAL=`id -uuser1`;
  

  2、练习:写一个脚本
       给定一个文件,比如/etc/inittab
       判断这个文件中是否有空白行;
       如果有,则显示其空白行数;否则,显示没有空白行。
  
   #!/bin/bash
   # program
   #  练习使用if语句判断默认shell
   # history  level1 2016-10-19-14:20
   PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bash
    export PATH
      grep "^$" /etc/inittab
      RESULT=`echo $?`
      if [ $RESULT -eq 0 ]; then
         echo "The lines is `grep "^$" /etc/inittab | wc -l`"

       else
         echo "The lines is not exist."
       fi
  3、练习:写一个脚本
       给定一个用户,判断其UID与GID是否一样
       如果一样,就显示此用户为“good guy”;否则,就显示此用户为“bad guy”。
     #!/bin/bash
     # program
     # 判断用户的GID和UID是否一致
     # history 2016-10-19-15:26
     PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bash
    export PATH
       NAME=user5
       USERUID=`id -u $NAME` (USERUID=`grep "\<$NAME\>" /etc/passwd | cut -d: -f3`)
       GROUPGID=`id -g $NAME` (USERUID=`grep "\<$NAME\>" /etc/passwd | cut -d: -f4`)
     if [ $USERUID -eq $USERGID ]; then
         echo "The $NAME is good guy."
      else
         echo "The $NAME is bad guy."
     fi
  4、练习:写一个脚本
       给定一个用户,获取其密码警告期限;
       而后判断用户密码使用期限是否已经小于警告期限;
       提示:计算方法,最长使用期限减去已经使用的天数即为剩余使用期限;
       如果小于,则显示“Warning”;否则,就显示“OK”。
     #!/bin/bash

  # program
  # 判断用户密码使用期限是否到期
  # history time 2016-10-19-16:18
  PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bash
  export PATH
  USERNAME=donggen
  CHADAY=`grep "\<$USERNAME\>" /etc/shadow | cut -d: -f3`
  LONGDAY=`grep "\<$USERNAME\>" /etc/shadow | cut -d: -f5`
  WARNING=`grep "\<$USERNAME\>" /etc/shadow | cut -d: -f6`
  let TODAYTIMES=`date +%s`/86400
  let USEDTIMES=$TODAYTIMES-$CHADAY
  let SURPLUSTIMES=$LONGDAY-$USEDTIMES
  if [ $SURPLUSTIMES -lt $WARNING ]; then
  echo "The surplus times is Warning!"
  else
  echo "The surplus times is OK!"
  fi
5、练习:写一个脚本

给定一个文件;
如果不存在,直接退出;
如果是一个普通文件,就显示为普通文件
如果是一个目录,亦显示出来
否则,此为无法识别的文件;
#!/bin/bash
#program:
#判断文件的类型
#history time:2016-10-20-11:40
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bash
export PATH
FILENAME=/etc/inittab


if [ ! -e $FILENAME ]; then
   echo "The $FILENAME is not exist."
    exit 6
fi
if [ -f $FILENAME ]; then
    echo "The $FILENAME is common file."
elif [ -d $FILENAME ]; then
    echo "The $FILENAME is directory."
else
   echo "The $FILENNAME is unknown."
fi
6、练习:写一个脚本

能接受一个参数(文件路径)
判定:此参数如果是一个存在的文件,就显示“ok";否则就显示“no such file.”
#!/bin/bash
#program:
#练习接受一个参数作为变量
#history time:2016-10-20-15:05
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bash
export PATH

if [  $# -lt 1 ]; then
     echo " Usage: $0 AGR1 [AGR2...]"
    exit 6
fi
if [ -e $1 ]; then
   echo "ok."
else
   echo "no such file"
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-461876-1-1.html 上篇帖子: Linux 简单安装步骤 下篇帖子: linux1231231111
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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