shell脚本编程习题浅析

xiaoxiao2021-02-28  33

Shell脚本(Shell script),又称Shell命令稿、程序化脚本,是一种电脑程序与文本文件,内容由一连串的shell命令组成,由Unix shell扮演命令行解释器的角色,在读取shell脚本之后,依序运行其中的shell命令,之后输出结果。利用shell脚本可以进行系统管理,文件操作等。主要是方便管理员进行设置或者管理用的,换一种说法也就是,shell script是利用shell的功能所写的一个程序,这个程序是使用纯文本文件,将一些shell的语法与指令写在里面,然后用正规表示法,管道命令以及数据流重导向等功能,以达到我们所想要的处理目的。

在Unix及所有的类Unix系统中,如Linux、FreeBSD等操作系统,都存在shell脚本。依照Unix shell的各种不同类型,shell脚本也有各种不同方言。在DOS、OS/2、Microsoft Windows中的批处理文件,跟shell脚本有类似的功能。(以上定义来自维基百科及百度百科)

现在来写第一个shell脚本吧。

打开文本编辑器(可以使用vi/vim命令来创建文件),新建一个文件hello.sh,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好。

解析:第一行必须包括shell声明序列:#! 它告诉系统这个脚本需要什么解释器来执行,即使用哪一种Shell,此例使用的shell是/bin/bash。添加注释,注释以#开头,有利于以后对脚本的维护和更新,要养成写注释的好习惯。echo命令用于向窗口输出文本

下面开始进入shell脚本基础篇的习题。需要开动脑筋的时候到了。

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

给文件加上执行权限,chmod +x systeminfo,执行结果如下:

解析:本题主要是将当前主机系统的信息提取出来。将提取出来的值赋值给变量,再调用变量即可,主要用到了正则表达式以及管道等

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

e

3编写脚本/root/bin/sumid.sh,计算/etc/passwd文件中的第m个用户和第n用户的ID之和

 

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

 

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

执行结果

 

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

 

7 写一个能够创建新脚本的Shell script,如名为createsh.sh 当执行时createsh /root/bin/test1.sh

则会自动创建并打开/root/bin/test1.sh,且其中包含以下内容。

#!/bin/bash

# ------------------------------------------

# Filename:

# Revision:

# Date:

# Author:

# Website:

# Description:

# ------------------------------------------

执行chmod +x createsh.sh ,给createsh.sh 加上执行权限,将createsh.sh移动到/root/bin下,这样执行脚本

 

8 编写一个脚本/root/bin/createuser.sh,脚本的执行语法必须是:createuser.sh -u username -m password,选项与参数间可支持多空格,但不能顺序颠倒。

当未指定正确的选项或参数时,以错误输出方式提示"createuser.sh -u username -m password "后退出脚本。

用户名必须以字母开头,可包括数字和_。否则不合法。以错误输出提示用户"用户名仅包含字母数据和下划线"

当用户名检测合法后,判断用户名是否已存在,若存在,再判断用户是否已设置过密码,若设置过密码,直接退出,未设置,则将密码设置为所指定的密码后以正确输出方式显示"username 密码已更新后退出"

当用户名不存在,则创建用户,并为该用户设置所指定的密码后以正确输出方式显示"用户username已创建并更新密码"

要求脚本执行过程中不能有非要求的其他输出结果出现。脚本在非正确方式退出时应反回给?参数非0值。

以下是对脚本的验证过程:

转载请注明原文地址: https://www.6miu.com/read-36037.html

最新回复(0)