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

时间: 2024-12-05 07:22:34

linux命令:if语句练习的相关文章

linux命令学习笔记

操作文件和目录: copy: $ cp file1 file2 $ cp -r dir1 dir2 move: $ mv file .. $ mv file dir/ rename: $ mv file1 file2 $ mv dir1 dir2 # dir2如果存在,则为移动操作 remove: $ rm file $ rm -r dir 创建文件: $ touch a.txt $ >a.txt 创建目录: $ mkdir dir 查看文件: #一般 $ cat file #查看文件类型: $

Linux命令--1

之前一直在学习Linux,不过有点一天打鱼两天晒网的意味,现在希望通过写博客的形式,积累更多的知识,也希望可以帮到同在linux坑中的各位小伙伴们~ PS:我的笔记重点在于通俗,很多命令一百度就有,但是有的命令参数多且好多都用不上,还有的就是在解释参数的时候有些晦涩,所以在我写的这些命令中,可能有个别参数没有写 请大家注意,还有就是知识点来自于实验楼----Linux命令实例练习 这个实验,自我感觉挺适合新手入门的 1 ls 命令 ls 用来打印出当前目录的清单.如果 ls 指定其他目录,那么就

十年linux命令总结

十年linux命令总结 本文链接: http://codingstandards.iteye.com/blog/786653 关于命令类型划分 本表中列出了我穷尽了我所有的记忆整理出来的Linux命令,其中关于外部命令.关键字或内建命令的划分,不一定正确.有很多命令,既是内建命令也 可能是外部命令,为啥?Bash为了更高效率的执行命令和脚本,把很多外部命令以内建命令的方式实现了.我们使用type这个命令就可以知道一个命令的类 型了,如下所示: [[email protected] ~]# typ

github linux 命令行操作实例

继续整理一下linux 下面使用命令行操作实例 首先创建文件目录 然后 执行 git clone 操作 [email protected]:~/桌面$ cd test/ [email protected]:~/桌面/test$ git clone https://github.com/timelessz/TESTDEMO.git正克隆到 'TESTDEMO'...remote: Counting objects: 3, done.remote: Total 3 (delta 0), reused

关于Linux中循环语句for,while,until用法的详解

关于Linux中循环语句for,while,until用法的详解 for,while,until这些循环结构体在Linux的script中是使用非常多的,所以掌握他们的用法是很必要的,以下是我整理的关于这三个命令的一些用法,希望对需要的人有帮助. 一.for循环   结构一 :             for 变量 in 列表 ; do                                            循环体                             done

Linux命令:cp、time、cut、awk 、获取文件大小命令

最近写了一个shell脚本,用到了cp.time.cut.awk命令,把他们的使用方法给写下来: 1.cp和mv cp命令:用来完成文件的复制,从源文件夹复制到目标文件夹.执行后源文件夹和目标文件夹均有源文件. mv 命令:用来移动文件.执行后,源文件夹中没有源文件.我经常用mv命令来重命名文件 注意:cp命令源文件夹与目标文件夹不能使同一个:而在mv中可以是同一个. 命令解析: #cp [-R] 源文件 目标文件夹 cp -R 参数 ---当复制整个文件夹时使用. #mv 源文件 目标文件夹

linux命令之ulimit

系统性能一直是一个受关注的话题,如何通过最简单的设置来实现最有效的性能调优,如何在有限资源的条件下保证程序的运作,ulimit 是我们在处理这些问题时,经常使用的一种简单手段.ulimit 是一种 linux 系统的内建功能,它具有一套参数集,用于为由它生成的 shell 进程及其子进程的资源使用设置限制.本文将在后面的章节中详细说明 ulimit 的功能,使用以及它的影响,并以具体的例子来详细地阐述它在限制资源使用方面的影响. ulimit 功能简述假设有这样一种情况,当一台 Linux 主机

linux shell 和linux 命令的区别?windows shell 和 windows 命令呢?

shell翻译成壳的意思,它是包裹在linux内核外层的,一个可通过一系列的linux命令对操作系统发出相关指令的人机界面. shell可以通过其条件语句和循环语句等,把一系列linux命令结合在一起,形成一个相当于面向过程的程序,shell script,来实现一些较为复杂的功能.总括,shell是linux命令集的概称,是属于命令行的人机界面.Shell 是一个用C语言编写的程序,它是用户使用Linux的桥梁.Shell既是一种命令语言,又是一种程序设计语言.Shell 是指一种应用程序,这

每天一个Linux命令(10)cp命令

cp命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录.它可以将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的目录下.cp命令还支持同时复制多个文件,当一次复制多个文件时,目标文件参数必须是一个已经存在的目录,否则将出现错误.     (1)用法: 用法: cp [选项]... [-T]   源文件    目标文件 或: cp  [选项]...         源文件...  目录 或: cp  [选项]... -t      目录         源文件...     (

Linux命令大全----常用文件操作命令

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:本文主要讲了Linux命令大全----常用文件操作命令,并附有实例 ls 这个命令是经常用到的,用来显示当前目录下有哪些文件 ,ls最常用的参数有三个: -a -l -F.ls -a说明:Linux上的文件以"."开头的文件被系统视为隐藏文件,仅用ls命令是看不到他们的,而用ls -a除了显示 一般文件名外,连隐藏文件也会显示出来. ls -l(这个参数是字母L的小写,不是数