简单的脚本编写

来源:互联网 发布:it outlet 编辑:程序博客网 时间:2024/05/17 03:27

1、练习:写一个脚本
判断当前系统上是否有用户的默认shell为bash;
如果有,就显示有多少个这类用户;否则,就显示没有这类用户;
grep "bash$" /etc/passwd &> /dev/null
RETVAL=$?
if [ $RETVAL -eq 0 ]; then

if grep "bash$" /etc/passwd &> /dev/null; then

方法二:
#!/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

 


<script type="text/javascript"><!--google_ad_client = "ca-pub-1944176156128447";/* cnblogs 首页横幅 */google_ad_slot = "5419468456";google_ad_width = 728;google_ad_height = 90;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>