1、判断/etc/inittab文件是否大于100行,如果大于,则显示”/etc/inittab is a big file.”否者显示”/etc/inittab is a small file.”

a=cat /etc/inittab |wc-l

[root@loca~]# if [a>100]; then

> echo "/etc/inittab is a big file"

> else

> echo "/etc/inittab is a small file"

> fi

/etc/inittab is a small file

 

2、给定一个用户,来判断这个用户是什么用户,如果是管理员用户,则显示“该用户为管理员”,否则显示“该用户为普通用户”

[root@localhost ~]# b=who | cut -d' ' -f1

[root@localhost ~]# if b=root;then

> echo "该用户为管理员“

> else

> echo "该用户为普通用户“;

> fi

该用户为管理员“

3、判断某个文件是否存在

[root@localhost ~]# if [-f "a.txt" ];then

> echo "文件存在"

> else

> echo "文件不存在"

> fi

文件不存在

 

#-d判断对象是否存在,并且为目录文件

#-f 判断对象是否存在,并且为常规文件

#-L 判断对象是否存在,并且为符号链接

#-h 判断对象是否存在,并且为软链接

4、判断当前系统上是否有用户的默认shell程序是否为bash程序,如果有,就显示有多个这类用户,否则就显示没有这类用户;【并且显示出那些用户是bash】

vim bash.sh

#!/bin/bash

grep "\<bash$" /etc/passwd &> dev/null

RETVAL=$?

if [ $RETVAL -eq 0 ]; then

   USERS=`grep "\<bash$" /etc/passwd | wc -l`

   echo "The shells of $USERS users is bash shell."

else

   echo "No such user."

fi

 

vim bash2.sh

#!/bin/bash

grep "\<bash$" /etc/passwd &> dev/null

RETVAL=$?

if [ $RETVAL -eq 0 ]; then

   AUSER=`grep "\<bash$" /etc/passwd | head -l | cut -d: -f1`

   echo "$AUSER is one of such users"

else

   echo "No such user."

fi

 

5、写出一个脚本程序,给定一个文件,比如:/etc/inittab a、判断这个文件中是否有空白行? b、如果有,则显示其空白行的行号,否则显示没有空白行

[root@localhost ~]# touch id.sh

[root@localhost ~]# vim id.sh

#!/bin/bash

if [  `grep "^$" /etc/inittab|wc -l` =0] ; then

echo "无空白行"

else

echo `grep "^$" /etc/inittab|wc -l`

fi

 

测试:

[root@localhost ~]# bash kbh.sh

无空白行

6、写一个脚本程序,给定一个用户,判断其UID与GID是否一样,如果一样,就显示该用户为“good guy”,否则显示为“bad guy”

[root@localhost ~]# touch id.sh

[root@localhost ~]# vim id.sh

#!/bin/bash

a=`id whb|cut -d' ' -f1|tr -cd "[0-9]"`

b=`id whb|cut -d' ' -f2|tr -cd "[0-9]"`

if [ "$a" == "$b" ]; then

echo "good guy"

else

echo "bad guy"

fi

 

结果测试:

[root@localhost ~]# bash id.sh

good guy

 

7、写一个脚本程序,给定一个用户,获取其密码警告期限;然后判断用户最近一次修改密码的时间距离今天是否已经小于警告期限;

#!/bin/bash

JINGGAO=`grep "^yyr" /etc/shadow | cut -d: -f6 `

MIAOSHU=`date +%s`

TIANSHU=$[$MIAOSHU/86400]

XIUGAI=`grep "^yyr" /etc/shadow | cut -d: -f3 `

SHIYONG=$[$TIANSHU-$XIUGAI]

ZUICHA=`grep "^yyr" /etc/shadow | cut -d: -f5 `

SHENGYU=$[$ZUICHA-$SHIYONG]

if [ $SHENGYU -gt $JINGGAO ] ;

then

echo "ok"

else

echo "Warning"

fi

8、判断命令历史中历史命令的总条目是否大于1000,如果大于,则显示“some command will gone”,否则显示OK

[root@localhost ~]# a=`history |wc -l`

317

 

[root@localhost ~]# if [ $a>1000 ];then echo "some command will gone"; else echo "ok"; fi

ok

9、给定一个文件,如果是普通文件,就显示出来,如果是目录文件,也显示出来,否则就显示“无法识别”

[root@localhost ~]# touch showwj.sh

[root@localhost ~]# vim showwj.sh

#!/bin/bash

echo "wenjian"

read wj

if [ ! -f "$wj" ] ; then

echo "这是一个目录"

ls "$wj"

elif [ ! -d "$wj" ] ; then

echo "这是一种文件"

cat "$wj"

else

echo "无法识别"

fi

        

测试:

[root@localhost ~]# bash showwj.sh

wenjian

a.txt

这是一种文件

宝哥,你真帅!

[root@localhost ~]# bash showwj.sh

wenjian

/dev

这是一个目录

agpgart         hugepages        ptmx      tty13  tty35  tty57    vcs3

autofs            hwrng               pts       tty14  tty36  tty58    vcs4

block             initctl          random    tty15  tty37  tty59    vcs5

bsg         input                 raw       tty16  tty38  tty6     vcs6

 

 

10、写一个脚本,能接受一个参数(文件路径),判断这个参数如果是一个存在的文件就显示“ok”,否则显示“No such file”

[root@localhost ~]# touch lujing.sh

[root@localhost ~]# vim lujing.sh

#!/bin/bash

echo "please input you lujin"

read lujing

if [ -f "$lujing" ] ;then

echo "ok"

else

echo "No such file"

fi

 

测试:

[root@localhost ~]# cd /

[root@localhost /]# touch a.txt

[root@localhost ~]# bash lujing.sh

please input you lujin

/a.txt

ok

 

11、写一个脚本,给脚本传递两个参数,显示两则之和和两者之积

[root@localhost ~]# touch cs.sh

[root@localhost ~]# vim cs.sh

#!/bin/bash

 

echo "please input a"

read a

echo "please input b"

read b

c=$[a*b]

echo "chengji=$c"

 

测试结果:

[root@localhost ~]# bash cs.sh

please input a

2

please input b

5

chegnji=10