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 ,如需转载请自行联系原作者