脚本基础练习题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了脚本基础练习题相关的知识,希望对你有一定的参考价值。

1.编写脚本/root/bin/systeminfo.sh,显示当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本,cpu型号,内存大小,硬盘大小。
#!/bin/bash

显示电脑硬件信息

        echo "主机名:      $(hostname)"
        echo "IPv4地址:    $(ifconfig | head -n2 |tail -n1 |tr -s " " ":"| cut -d":" -f3)"
        echo "操作系统版本:$(cat /etc/redhat-release)"
        echo "内核版本:    $(uname -r)"
        echo "CPU型号:     $(cat /proc/cpuinfo|grep "model name"|uniq -c|cut -d":" -f2)"
        echo "内存大小:    $(free -m | head -n2 |tail -n1|tr -s " " ":"|cut -d":" -f2)"
        echo "硬盘大小:    $(fdisk -l | grep "GB"|cut -d":" -f2|cut -d"," -f1)"

2.编写脚本/root/bin/backup.sh,可实现每日将/etc/目录备份到/root/etcYYYY-mm-dd中
#!/bin/bash
cp -r /etc/ /root/etc"$(date +%F)"
3.编写脚本/root/bin/disk.h,显示当前硬盘分区中空间利用率最大的值
#!/bin/bash
max=$(df |tr -s " " ":"|cut -d ":" -f5|egrep -o "[[:digit:]]*"|sort -nr|head -n1)
echo "当前硬盘分区中空间利用率最大的值为: $max"
4.编写脚本/root/bin/links.sh,显示正连接本主机的每个远程主机的IPv4地址和连接数,并按连接数从大到小排序
#!/bin/bash
links=$(netstat -tan| grep "^[t]|[u]"|tr -s " " ":"|cut -d":" -f6|uniq -c|sort -nr|egrep "<(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]).){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])"|tail -n1)
echo "连接数和IP地址分别为:$links"
exit 0
5.编写脚本/root/bin/sumid.sh,计算etc/passwd文件中的第十个用户个第二十个用户的ID之和
#!/bin/bash
usera=$(cat -n /etc/passwd | head |tail -n1|cut -d":" -f3)
echo "id为10的uid:$usera"
userb=$(cat -n /etc/passwd | head -n20|tail -n1|cut -d":" -f3)
echo "id为20的uid:$userb"

userall=$usera+$userb

let usera=$usera+$userb
echo "id和为: $usera"
exit 0

6.编写脚本/root/bin/sumspace.sh,传递两个文件路径作为参数给脚本,计算这两个文件中所有空白行之和。
#!/bin/bash
a=$(cat $1|grep "^[[:space:]]$"|wc -l)
b=$(cat $2|grep "^[[:space:]]
$"|wc -l)
#let a=$a+$b
let c=$a+$b
echo "$1,$2两个文件的空白行之和为$c"
exit 0
7.编写脚本/root/bin/sumfile.sh,统计/etc,./var,/usr目录中共有多少个一级子目录和文件
#!/bin/bash
ef=$(ls /etc/ | grep ".[:]$"|wc -l)
ed=$(ls /etc/ | grep -v ".[:]$"| grep -v "^[[:space:]]$"|wc -l)
vf=$(ls /var/
| grep ".[:]$"|wc -l)
vd=$(ls /var/
| grep -v ".[:]$"| grep -v "^[[:space:]]$"|wc -l)
uf=$(ls /usr/ | grep ".[:]$"|wc -l)
ud=$(ls /usr/ | grep -v ".[:]$"| grep -v "^[[:space:]]*$"|wc -l)
echo "/etc目录中一共有$ef个一级子目录,$ed个文件"
echo "/var目录中一共有$vf个一级子目录,$vd个文件"
echo "/usr目录中一共有$uf个一级子目录,$ud个文件"
8.写一个生成脚本的脚本,/root/bin/createsh.sh当执行如/root/bin/createsh.sh test .sh时,会自动在/root/bin下新建一个名为test.sh的新文件,该文件会自动给上执行权限,同时自动在文件头上加上#!及注释信息。注释信息如下:
#!/bin/bash

------------------------------------------

    # Filename:    test.sh(此处会根据文件名自动更换)
    # Revision:    1.0
    # Date:        2017-01-22(此处会自动变换为当前日期)
    # Author:      Nanyibo
    # Email:       nanyibo@gmail.com
    # ------------------------------------------
    # Copyright:   2017 nanyibo
    # License:     GPL

之后,自动使用vim打开,等待用户开始编写脚本正文
#!/bin/bash
touch /root/bin/$1
chmod +x /root/bin/$1
echo "#!/bin/bash

------------------------------------------

                    # Filename:    $1(此处会根据文件名自动更换)
                    # Revision:    1.0
                    # Date:        $(date +%F)(此处会自动变换为当前日期)
                    # Author:      xiaoyu
                    # Email:       851812316@qq.com
                    # ------------------------------------------
                    # Copyright:   2018 xiaoyu
                    # License:     GPL" > /root/bin/$1
        vim /root/bin/$1

以上是关于脚本基础练习题的主要内容,如果未能解决你的问题,请参考以下文章

脚本语句介绍和练习题一

Python matplotlib 基础练习:画出正弦曲线等

基础脚本编程练习题

脚本基础练习题

Linux练习题-shell脚本编程基础篇(施工中)

Rocky基础练习题-shell脚本2