linux命令:if语句练习

简介:

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














本文转自wang650108151CTO博客,原文链接:http://blog.51cto.com/woyaoxuelinux/1863667 ,如需转载请自行联系原作者



相关文章
|
4天前
|
机器学习/深度学习 缓存 监控
linux查看CPU、内存、网络、磁盘IO命令
`Linux`系统中,使用`top`命令查看CPU状态,要查看CPU详细信息,可利用`cat /proc/cpuinfo`相关命令。`free`命令用于查看内存使用情况。网络相关命令包括`ifconfig`(查看网卡状态)、`ifdown/ifup`(禁用/启用网卡)、`netstat`(列出网络连接,如`-tuln`组合)以及`nslookup`、`ping`、`telnet`、`traceroute`等。磁盘IO方面,`iostat`(如`-k -p ALL`)显示磁盘IO统计,`iotop`(如`-o -d 1`)则用于查看磁盘IO瓶颈。
|
1天前
|
监控 Linux Windows
50个必知的Linux命令技巧,你都掌握了吗?(下)
50个必知的Linux命令技巧,你都掌握了吗?(下)
|
1天前
|
Linux Shell Windows
Linux 常用基本命令
Linux 常用基本命令
|
2天前
|
Ubuntu Linux Shell
linux免交互登陆远程主机并执行命令(密钥对和Expect)
linux免交互登陆远程主机并执行命令(密钥对和Expect)
|
2天前
|
Linux
【Linux】常用命令
【Linux】常用命令
21 0
|
2天前
|
安全 Ubuntu Linux
Linux 网络操作命令Telnet
Linux 网络操作命令Telnet
14 0
Linux 网络操作命令Telnet
|
3天前
|
Linux 数据安全/隐私保护
Linux常用命令实例带注释
Linux常用命令实例带注释
30 0
|
3天前
|
Linux 开发工具 数据安全/隐私保护
Linux(19)常用解压命令记录
Linux(19)常用解压命令记录
9 0
|
4天前
|
Linux Perl
Linux系统替换字符串常用命令
请注意,`sed`命令可以非常强大,可以根据不同的需求使用不同的选项和正则表达式来进行更复杂的字符串替换操作。
17 0
|
7天前
|
安全 Linux 开发工具
Linux中可引起文件时间戳改变的相关命令
【4月更文挑战第12天】Linux中可引起文件时间戳改变的相关命令
16 0