shell脚本编程基础练习

这周,我们学习了shell脚本基础,那么什么是shell脚本呢

shell script是利用shell的功能所写的一个程序,这个程序是使用纯文本文件,将一些shell的语法与指令写在里面,然后用正则表达式,管道命令以及重定向向等功能,以达到我们所想要的处理目的。Shell脚本可以帮助我们系统、自动化的去管理和处理一些东西

下面是摘抄出的几个练习:

首先,写一个能够创建新脚本的Shell script,如createshXX.sh, 当执行createsh /root/bin/test1.sh 则会自动创建并打开/root/bin/test1.sh,且其中包含以下内容:

#!/bin/bash

# ——————————————

# Filename:

# Revision:

# Date:

# Author:

# Email:

# Website:

# Description:

# ——————————————

shell脚本编程基础练习

注:$1 位置变量,指代后面输入的第一个参数,使用echo和”>” 生成文件并导入模板内容,chmod +x给予文件可执行权限

下面的所有脚本都使用这个脚本创建,基本注释就可以省略了。shell脚本编程基础练习

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

 _space=`cat $@ | egrep “^[[:space:]]*$” |wc -l` ; echo $_space

注:这道练习没有难点,不过上面的解答很有创意,所以收藏了。通过cat同时查看多个文件,然后grep直接匹配两个文件的所有空白行,这样就省去了运算过程 ,66的 。 

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

[   “$@”  ]&&(cat $1 |grep “^[[:space:]]*$” |wc -l) ||(echo 至少应该给一个文件参数!;exit)

注:$@: 传递给脚本的所有参数,每个参数为独立字符串 ,()将多个命令组合起来作为一组执行。

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

A=`df | grep sd|sort -nr -k5|head -1|tr -s ‘ ‘ %|cut -d% -f5`

B=`df -i| grep sd|sort -nr -k5|head -1|tr -s ‘ ‘ %|cut -d% -f5`

[ “$A” -gt “80” ] && wall “空间即将满”||echo “空间使用率不超过80%”

[ “$B” -gt “80” ] && wall “inode即将满”||echo “inode使用率不超过80%”

unset A B

注:写这个脚本的时候,我一直在纠结,因为不知道应该怎么把几个数字依次与80%对比,原来只需要使用sort和head取最大的使用率和80%对比就行了,尴尬!shell脚本编程基础练习

4.编写脚本/bin/per.sh,判断当前用户对指定的参数文件,是否不可读并且不可写

shell脚本编程基础练习

注:这个脚本一定要注意加入判断文件是否存在,不然如果文件不存在,也会显示为文件不可读且不可写。

5.编写脚本/root/bin/excute.sh ,判断参数文件是否为sh后缀的普通文件,如果是,添加所有人可执行权限,否则提示用户非脚本文件

shell脚本编程基础练习

注:[ =~ ]测试‘=~’前面的字符串能否被后面的字符串匹配,要注意以’.sh’结尾的表示方法,不知道你会不会错,反正我错了好多次。

shell脚本会在我们将来工作中经常使用到,一定要好好练习。






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

(0)
mayunmayun
上一篇 2017-08-05
下一篇 2017-08-05

相关推荐

  • 复制多台虚拟机及简单的网络配置

    虚拟机的复制,网络地址的简单配置,图形化界面setup和system-config-network的使用

    2017-09-09
  • 第二周 N28

    作业二

    2017-12-10
  • Centos6基于虚拟主机的Lamp配置bbs、Blog、PhpMyAdmin应用程序

    Centos6实现基于虚拟主机的各应用程序搭建: 一、配置三个基于名称的虚拟主机;       虚拟主机一、discuzX       虚拟主机二、wordpress       虚拟主机三…

    2017-06-01
  • Nginx相关实战案例

    Nginx相关实战案例: Nginx在实际生产中极为重要,先来看一下Nginx配置文件nginx.conf中文详解 #定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于CPU总核心数。 worker_processes 8; #全局错误日志定义类型,[ debug | info | notice | warn |…

    Linux干货 2017-06-19
  • 马哥教育网络班22期+第5周课程练习

    1、显示当前系统上root、fedora或user1用户的默认shell; [root@localhost ~]# awk -F: '{print $1,$7}' /etc/passwd| egrep "^\<(root|fedora|user…

    Linux干货 2016-09-15
  • 设计模式 ( 十五 ) 中介者模式Mediator(对象行为型)

    1.概述 在面向对象的软件设计与开发过程中,根据“单一职责原则”,我们应该尽量将对象细化,使其只负责或呈现单一的职责,即将行为分布到各个对象中。 对于一个模块或者系统,可能由很多对象构成,而且这些对象之间可能存在相互的引用,在最坏的情况下,每一个对象都知道其他所有的对象,这无疑复杂化了对象之间的联系。虽然将一个系统分割成许多对象通常可以增强可复用性,但是对象…

    Linux干货 2015-07-20