测试脚本

1.写一个脚本

  • (1) 接受一个以上文件路径作为参数,一个路径或多个路径作为参数;
  • (2) 显示每个文件拥有的行数;
  • (3) 并且说明一共统计了有多少文件,且一共多少行;
#!/bin/bash
#
#
if [ $# -lt 1 ];then
    echo " $0 PATH1 PATH2.... "
    exit 1
fi

declare -i line
declare -i lines=0
declare -i FILE_NUMS=0
PATH_NUMS=$#
# 这里的注意点在于:使用变量去参数名需要这里来取:${!i} == $1 == 参数1
for i in `seq $PATH_NUMS`; do
        if [ -e ${!i} ];then
            line=$(wc -l ${!i} | cut -d" " -f1)
            lines=$[ $lines+$line ]
            let FILE_NUMS++
            echo -e "\E[1;33m${!i}有$line行 \033[0m"
        else
                echo -e "\E[1;31m${!i}不存在 \033[0m"   
        fi
done
echo -e "\E[1;33m一共统计了$FILE_NUMS个文件,一共$lines行 \033[0m" 

2.写一个脚本

  • (1) 传递两个以上的字符串当作用户名,可以是3个也可以是多个哦,不限于两个哦;
  • (2) 创建这些用户;且密码同用户名;
  • (3) 统计一共创建了几个用户;
#!/bin/bash
#
if [ $# -lt 2 ];then
    echo "请输入两个以上的用户名作为参数"
    exit 1
fi

declare -i USER_NUMS=0
ARGS=$#

for i in `seq $ARGS`; do
    if id ${!i} &> /dev/null;then
        # 如果用户存在
        echo -e "\E[1;31m用户${!i}存在 \033[0m"
    else
        # 如果用户不存在
        useradd ${!i}
        echo "${!i}" | passwd --stdin ${!i} &> /dev/null
        let USER_NUMS++
        echo -e "\E[1;33m创建用户${!i} \033[0m"
    fi
done
echo -e "\E[1;34m一共创建了$USER_NUMS \033[0m"

3.写一个脚本

  • (1)给脚本传递两个数值用于指定用户的范围,例如:1 20 则创建20个用户 或 101 200 则创建100个用户
  • (2)批量新建用户,如:student1---student20, 或 student101---student200;
  • (3)密码与用户名相同;
  • (4)如果用户已经存在就不统计其UID,并给出提示
  • (5)计算新建用户的UID之和;
#!/bin/bash
#

declare -i ID
declare -i ID_SUM=0

for i in `seq $1 $2`; do
    if id student$i &> /dev/null ;then
        # 如果用户存在
        echo -e "\E[1;31m用户student$i已经存在 \033[0m"
    else
        useradd student$i
        echo "student$i" | passwd --stdin student$i &> /dev/null
        ID=$(id -u student$i)
        ID_SUM=$[ ID_SUM+ID ]
        echo -e "\E[1;34m创建了用户student$i \033[0m"
    fi
done
echo -e "\E[1;33m用户的UID之和为:$ID_SUM \033[0m"

4.写一个脚本

  • (1)分别统计/etc/rc.d/rc.sysinit、/etc/rc.d/init.d/functions和/etc/fstab文件中以#号开头的行数之和,以及总的空白行数;
#!/bin/bash
# 
declare -i Line1=0
declare -i Line2=0

for file in /etc/rc.d/rc.sysinit /etc/rc.d/init.d/functions /etc/fstab; do
    Line1=$[ $Line1+$(egrep "^#" $file | wc -l) ]
    Line2=$[ $Line2+$(egrep "^[[:space:]]*$" $file | wc -l) ]
done
echo -e "\E[1;33m#号开头的行数之和为:$Line1\033[0m"
echo -e "\E[1;31m空白行数之和:$Line2\033[0m"

5.写一个脚本

  • (1)显示当前系统上所有默认shell为bash的用户的用户名、UID以及此类所有用户的UID之和;
#!/bin/bash
egrep "/bin/bash" /etc/passwd | cut -d: -f1
egrep "/bin/bash" /etc/passwd | cut -d: -f3

declare -i sum=0
for i in `egrep "/bin/bash" /etc/passwd | cut -d: -f3`;do 
    sum=$[ $i+$sum ] 
done  
echo -e "\E[1;33mUID之和为:$sum\033[0m"

6.写一个脚本

  • (1)使用ping命令探测172.16.250.1-172.16.250.254之间的所有主机的在线状态;
  • (2)在线的主机使用绿色显示;
  • (3)不在线的主使用红色显示;
  • (4)请使用函数完成
#!/bin/bash
# 使用ping命令探测172.16.250.1-172.16.250.254之间的所有主机的在线状态;
# 在线的主机使用绿色显示;
# 不在线的主使用红色显示;
PING(){
    if ping -c1 -w1 172.16.250.$1 &> /dev/null;then
        # 可以ping通
        echo -e "\E[1;32m172.16.250.$1 在线\033[0m"
    else
        # 不能ping通
        echo -e "\E[1;31m172.16.250.$1 不在线\033[0m"
    fi
}

for i in {1..254}; do
    PING $i
done

7.写一个脚本

  • (1) 添加10用户user1-user10;密码同用户名;
  • (2)用户不存在时才添加;存在时则跳过;
  • (3) 最后显示本次共添加了多少用户;
#/bin/bash
# (1) 添加10用户user1-user10;密码同用户名;
# (2) 用户不存在时才添加;存在时则跳过;
# (3) 最后显示本次共添加了多少用户;
#(4)用函数实现

Adduser(){
    adduser $1 
    echo "$1" | passwd --stdin $1 &> /dev/null
    echo "创建用户$1"
}

USER_COUNT=0

for i in `seq 10`;do
    if id user$i &> /dev/null;then
        continue
    else
        Adduser user$i
        let USER_COUNT++
    fi 
done
echo "create users $USER_COUNT"

8.打印逆序九九乘法表;

  • (1)给脚本传递一个参数,如果是9那么打印逆序九九乘法表,如果是8那么打印逆序八八乘法表
#!/bin/bash
#打印逆序九九乘法表

declare -i k
k=$1
while [ $k -ge 1 ]; do
        for i in `seq 1 $k| sort -n -r`;do
            echo -n "$i X $k = $[ $i*$k ]  "
        done
        echo ""
        let k--
done

9.写一个脚本

  • (1)传递一个磁盘设备文件路径给脚本,判断此设备是否存在;
  • (2)如果存在,则显示此设备上的所有分区信息;如果不存在,则显示设备不存在;
#/bin/bash
#

if [ $# -lt 1 ];then
    echo "please enter /dev/sd[a-z]"
    exit 1
fi
if [ -b $1 ];then
    fdisk -l
else
    echo "设备不存在"
fi

10.写一个脚本

传递一个参数给脚本,此参数为gzip、bzip2或者xz三者之一;

  • (1)如果参数1的值为gzip,则使用tar和gzip归档压缩/etc目录至/tmp目录中,并命名为/tmp/etc-20170613.tar.gz;
  • (2)如果参数1的值为bzip2,则使用tar和bzip2归档压缩/etc目录至/tmp目录中,并命名为/tmp/etc-20170613.tar.bz2;
  • (3)如果参数1的值为xz,则使用tar和xz归档压缩/etc目录至/tmp目录中,并命名为/tmp/etc-20170613.tar.xz;
  • (4)其它任意值,则显示错误压缩工具,并执行非正常退出;
#/bin/bash
#

if [ $# -lt 1 ];then
        echo "please enter an argument"
        exit 1
fi
if [ "$1" == "gzip" ];then
        tar czvf /tmp/etc-20170813.tar.gz /etc && echo "使用gzip归档"
elif [ "$1" == "bzip2" ];then
        tar cjvf /tmp/etc-20170813.tar.bz2 /etc && echo "使用bzip2归档"
elif [ "$1" == "xz" ];then
        tar Jcf /tmp/etc-20170813.tar.xz /etc && echo "使用xz归档"
else
        echo "压缩错误" 
        exit 1
fi
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,588评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,456评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,146评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,387评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,481评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,510评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,522评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,296评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,745评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,039评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,202评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,901评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,538评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,165评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,415评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,081评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,085评论 2 352

推荐阅读更多精彩内容