基础脚本编程练习题

    Shell脚本其实就是以一系列命令组合起来的文本文件,这些命令组合起来完成一个或者一项功能因为Shell似乎是各UNIX系统之间通用的功能,并且经过POSIX表示可移植操作系统接口Portable Operating System Interface of UNIX,缩写为 POSIX的标准化。因此,Shell脚本只要“用心写”一次,即可应用到很多系统上。因此,之所以要使用Shell脚本不仅仅是基于:它的简单性简洁地表达复杂的操作)和可移植性(脚本无须修改就可在不同的系统上执行),和它相对开发容易可以在短时间内完成一个功能强大又妤用的脚本)也离不开。它的示例一般长下面这样:

基础脚本编程练习题

下面小编通过一些练习题来向你们讲述shell的美基础脚本编程练习题

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

基础脚本编程练习题

 小编解析*:

 第8行:题目只要IPv4地址,所以使用ifconfig ens33,然后grep命令过滤出包含inet的那一行,最后tr命令把里面的空格转变成一个就可以切出你想要的那一串数字啦

 第9行:小编觉得这一行大家应该都知道,就是显示版本号和内核信息的,记住这俩命令即可,其他的就不多说了。

 第10行:与第8行相似,都是查询过滤再进行切除。

 第11行:我们看到两个$符对不对,中括号里面的$符是用来引用小括号里面的那些查看过滤取行首等命令执行的结果,中括号外面的$符是用来计算的,看到/符没,/1024就是 除以1024。(小编这里说的是不是有点绕基础脚本编程练习题

 第12行:相似与第810行,小编就不絮叨了。

结果显示:

基础脚本编程练习题

2、编写脚本/root/bin/backup.sh,可实现将/etc/目录备份到/root/etcYYYY-mm-dd中。

基础脚本编程练习题

结果显示:

基础脚本编程练习题

3、编写脚本/root/bin/disk.sh,显示当前硬盘分区中空间利用率最大的值。

基础脚本编程练习题

结果显示:

基础脚本编程练习题

4、编写脚本/root/bin/links.sh,显示正连接本主机的每个远程主机的IPv4地址和连接数,并按连接数从大到小排序。

基础脚本编程练习题

结果显示:

基础脚本编程练习题

5、编写脚本/root/bin/sumid.sh,计算/etc/passwd文件中的第10个用户和第20用户的ID之和。

基础脚本编程练习题

  小编解析*:

56行:这两行长得很像哈。首先我们看到反引号把所有内容都引起来了,它这里就是把里面的内容当做一个命令来执行。

7行:中括号里面的$符是分别引用第56行得出的user10user20的结果;外面的$是依题意要求计算他俩的和

8行:输出计算之后的和

结果如下:

[root@localhost bin]# ./sumid.sh   

70

6、编写脚本/root/bin/sumspace.sh,传递两个文件路径作为参数给脚本,计算这两个文件中所有空白行之和。

基础脚本编程练习题

  小编解析*:

5、6行:首先又是反引号,其作用如第5题,而grep后面加双引号可以识别所输入的变量;这道题所说的空白行就是由空格组成的行,也就是以空格开头以空格结尾但是中间也是有内容的,内容就是这些space^符就是以后面的space(空格)开头,*号代表有很多空格,$符就是以前面的space结尾$1$2就是传递给脚本的参数,最后wc再进行行数统计。

 78行与第5题相似,也是计算并输出结果。

结果显示:

基础脚本编程练习题

7、编写脚本/root/bin/sumfile.sh,统计/etc, /var, /usr目录中共有多少个一级子目录和文件。

基础脚本编程练习题

结果显示:

[root@localhost bin]# ./sumfile.sh

304

8、编写脚本/root/bin/argsnum.sh,接受一个文件路径作为参数;如果参数个数小于1,则提示用户“至少应该给一个参数”,并立即退出;如果参数个数不小于1,则显示第一个参数所指向的文件中的空白行数

基础脚本编程练习题

小编解析*:

5行中的$@表示传递给脚本的所有参数,如果传递的有参数,就会显示&&后面的小括号里统计出来的行数;如果没有传递参数,就会输出||后面的小括号里的“至少应该给一个参数”这句话。

   方法二:

   [[ $# -lt 1 ]] && echo “至少应该给一个参数!” || echo “第一个文件中有 `grep ‘^[[:space:]]*$’ $1|wc -l`个空白行

   这里小编用中括号进行判断传递给脚本参数的个数($#)是否小于(lt1,个数小于1就会显示”至少应该给一个参数“这句话,不小于1就输出||后面的统计结果。

结果显示:

[root@localhost bin]# ./argsnum.sh                 

至少应该给一个参数

[root@localhost bin]# ./argsnum.sh /etc/login.defs

第一个文件中有 10个空白行

9、编写脚本/root/bin/hostping.h,接受一个主机的IPv4地址做为参数,测试是否可连通。如果能ping通,则提示用户“该IP地址可访问”;如果不可ping通,则提示用户“该IP地址不可访问”

基础脚本编程练习题

  小编解析*:

  这一题里,-c代表ping几次,-w代表执行时间,小编这里是让它ping1次然后用时1秒,不然ping起来没完很费时间的啊。题目要求就是测试是否连通并没说要结果,所以我们就可以把它ping的结果无论成功失败都导入到垃圾桶(/dev/null)里面去,最后对应加上需要输出的语言就可以了。

结果显示:

基础脚本编程练习题

10、编写脚本/root/bin/checkdisk.sh,检查磁盘分区空间和inode使用率,如果超过80%,就发广播警告空间将满。

基础脚本编程练习题

小编解析*:

  第56行这里就是通过转换排序等命令得出最大值

  第78行是判断上面所得出的结果是否大于(gt80,大于就要发广播(wall命令),小于就显示正常。

结果显示:

基础脚本编程练习题

  第二种方法:

基础脚本编程练习题

 这种方法就是把方法1的判断那两行使用||合并成了一行,你们那么聪明,小编不多说了啊。

小编总结:关于shell脚本这一章就要多练题、多敲!基础脚本编程练习题



原创文章,作者:Qianzhihe,如若转载,请注明出处:http://www.178linux.com/83878

(1)
上一篇 2017-08-05 17:44
下一篇 2017-08-05 19:25

相关推荐

  • 05linux用户和组的权限总结

    1、文件的权限分类 文件的权限对象分三类:属主(u)、属组(g)、其他(o),每个对象都有rwx,读写执行三类权限。 对于文件 r:可查看文件内容 w:可修改其类容 x:可把此文件提请内核启动为一个进程 对于目录 r:可使用ls查看此目录中文件列表 w:可在此目录中创建和删除文件 x:可使用ls查看目录中文件列表,可以cd进入此目录 X:只给目录x权限,不给…

    Linux干货 2016-11-27
  • N26—第三周

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 [root@localhost ~]# who | cut -d ' ' -f 1 |sort -u l_cong root (unknown)   2、取出最后登录到当前系统的用户的相关信息。 [l_cong@localhost ~]$…

    Linux干货 2017-02-15
  • 第一周-2:Linux部分常用命令使用示例、查看命令行工具使用手册以及LinuxFHS部分目录简介

    一、部分命令使用示例: 1、ifconfg 在命令行界面下或系统配置脚本中用于配置、控制及查询TCP/IP网络接口的系统管理工具 [netartisan@localhost 桌面]$ ifconfig eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500 &n…

    Linux干货 2016-11-07
  • Linux Cluster之keepalived及keepalived + LVS DR的实现

      一、HA Cluster基础 系统可用性A=MTBF/(MTBF+MTTR) MTBF:平均无故障时间 MTTR:平均修复时间 降低MTTR的方式:冗余(redundent) 衡量标准:几个9 90%、99%、99.9%… 提升系统可用性的办法之一:降低MTTR 通过冗余(redundant)的方式能够避免单点故障(SPoF),从而…

    2016-11-02
  • linux 文件权限以及用户策略 讲解

     linux 文件权限以及用户策略 讲解    由于linux系统是一个多用户使用的系统,对于各个用户指定的文件或目录必须存在一套管理系统,以防止多用户对相同文件的混淆使用。于是催生出了linux系统文件的用户权限设置。其存在的意义就是每一个文件或目录对于不同的用户区分读取,写入,执行三种权限,即:r,w,x。下面将详…

    Linux干货 2016-08-05
  • VIM Note

    vim总结: 模式:编辑模式 插入模式 末行模式 内置命令行接口 打开文件 vim +# 打开文件后直接处于文件的#行行首 +/PATTER 打开文件后直接处于第一个被PATTER匹配到行的行首 + 直接处于尾行行首 模式转换 编辑模式:默认模式,打开文件后处于编辑模式 编辑模式–>插入模式: i: insert 光标所在地方输入 a:append 在…

    Linux干货 2017-08-14