简单的脚本编写
1、练习:写一个脚本 www.zhishiwu.com
判断当前系统上是否有用户的默认shell为bash;
如果有,就显示有多少个这类用户;否则,就显示没有这类用户;
grep "bash$" /etc/passwd &> /dev/null
RETVAL=$?
if [ $RETVAL -eq 0 ]; then
if grep "bash$" /etc/passwd &> /dev/null; then
方法二: www.zhishiwu.com
#!/bin/bash
#
GESHU=`grep "bash" /etc/passwd | wc -l`
if [ $GESHU -eq 0 ] ;
then echo "mei you zhe lei yong hu "
else
echo " you {$GESHU}"
fi
提示:“引用”一个命令的执行结果,要使用命令引用;比如: RESAULTS=`wc -l /etc/passwd | cut -d: -f1`;
使用一个命令的执行状态结果,要直接执行此命令,一定不能引用;比如: if id user1一句中的id命令就一定不能加引号;
如果想把一个命令的执行结果赋值给某变量,要使用命令引用,比如USERID=`id -u user1`;
如果想把一个命令的执行状态结果保存下来,并作为命令执行成功与否的判断条件,则需要先执行此命令,而后引用其状态结果,如
id -u user1
RETVAL=$?
此句绝对不可以写为RETVAL=`id -u user1`;
2、练习:写一个脚本
判断当前系统上是否有用户的默认shell为bash;
如果有,就显示其中一个的用户名;否则,就显示没有这类用户;
方法1:
#!/bin/bash
#
GESHU=`grep "bash" /etc/passwd | wc -l`
YONGHU=`grep "bash" /etc/passwd | cut -d: -f1 | tail -1`
if [ $GESHU -eq 0 ] ;
then echo "mei you zhe lei yong hu "
else
echo " you zhe yang de yong hu li ru :{$YONGHU}"
fi
3、练习:写一个脚本
给定一个文件,比如/etc/inittab
判断这个文件中是否有空白行;
如果有,则显示其空白行数;否则,显示没有空白行。
方法1:
#!/bin/bash
HANGSHU=`grep '^$' /etc/inittab | wc -l`
if [ $HANGSHU -eq 0 ];
then echo "mei you kong bai hang "
else
echo "you {$HANGSHU} hang kong bai hang"
fi
4、练习:写一个脚本
给定一个用户,判断其UID与GID是否一样
如果一样,就显示此用户为“good guy”;否则,就显示此用户为“bad guy”。
if ! grep “”
#!/bin/bash
USERNAME=user1
USERID=`id -u $USERNAME`
GROUPID=`id -g $USERNAME`
if [ $USERID -eq $GROUPID ]; then
echo "Good guy."
else
echo "Bad guy."
fi
方法1:
#!/bin/bash
USERNAME=useryangyaru
USERUID=`grep "^USERNAME/b" /etc/passwd | cut -d:-f3`
USERGID=`grep "^USERNAME/b" /etc/passwd | cut -d:-f4`
if [ $USERUID -eq $USERGID ]; then
echo "Good guy."
else
echo "Bad guy."
fi
进一步要求:不使用id命令获得其id号;
5、练习:
圆整:
写一个脚本
给定一个用户,获取其密码警告期限;
而后判断用户最近一次修改密码时间距是否已经小于警告期限;
提示:算术运算的方法$[$A-$B]:表示变量A的值减去变量B的值的结果;
如果小于,则显示“Warning”;否则,就显示“OK”。
方法1:
#!/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
6、练习:写一个脚本
判定命令历史中历史命令的总条目是否大于1000;
如果大于,则显示“Some command will gone.”;否则显示“OK”。
方法1:
#!/bin/bash
HIS=`history | tail -l | cut -d'' -f2 `
if [ $HIS -lt 1000 ]; then
echo "OK."
else
echo "Some command will gone."
fi