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

相关推荐

  • bash的工作特性之命令执行状态返回值和命令行展开

    bash的工作特性之命令执行状态返回值和命令行展开 bash的工作特性之命令执行状态返回值和命令行展开 执行状态返回值 命令行展开 执行状态返回值     Linux下每一条命令或每一个进程执行完成会返回一个状态码. 0:成功执行 1-255:执行过程中出现异常或非正常退出 在Shell脚本中,最后…

    Linux干货 2016-11-05
  • 什么是文件系统

    文件系统:层级结构;有索引; /: 原初起点; 倒置树状结构; /dev/pts/2: 最左侧/: 表示根目录 其它的/: 表示路径分隔符 Linux的路径分隔符是/ Windows的是\ 文件的路径表示: 绝对路径:从根开始表示出的路径  相对路径:从当前位置开始表示出的路径 文件名使用法则: 严格区分字符大小写:file1, File1, FI…

    Linux干货 2016-10-29
  • 系统时间与硬件时间

    1. “系统时间”与“硬件时间”    系统时间: 一般说来就是我们执行 date 命令看到的时间,linux系统下所有的时间调用(除了直接访问硬件时间的命令)都是使用的这个时间。    硬件时间: 主板上BIOS中的时间,由主板电池供电来维持运行,系统开机时要读取这个时间,并根…

    Linux干货 2016-08-05
  • 定时任务的完成contab

    采用crontab来完成 利用crontab来定时执行任务大致有如下三步: 1、编写shell脚本 2、利用crontab加入到定时任务队列 3、查看作业完成情况 一、如何建立shell脚本 Linux下有很多不同的shell,但我们通常使用bash(bourne again shell)进行编程,因为bash是免费的并且很容易使用 程序必须以下面的行开始(…

    Linux干货 2016-08-11
  • 流式传输的两大主流种类及流式传输特点

     流式传输定义很广泛,现在主要指通过网络传送媒体(如视频、音频)的技术总称。其特定含义为通过Internet 将影视节目传送到PC机。实现流式传输有两种方法:实时流式传输(Realtime streaming)和顺序流式传输(progressive streaming)。(百度百科)     在网络上传输音/视频(英文…

    Linux干货 2015-04-10
  • 文本处理学习小结

    抽取文本的工具 文件内容:less和cat 文件截取:head和tail 按列抽取:cut 按关键字抽取:grep 文件查看 复制标准输入到标准输出 文件查看命令:cat, tac,rev cat命令: cat [OPTION]… [FILE]… -E: 显示行结束符$ -n: 对显示出的每一行进行编号 -A:显示所有控制符 -b:非…

    Linux干货 2016-08-07