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 15:47
下一篇 2017-08-05 16:11

相关推荐

  • HAProxy浅说

    HAProxy浅说:    HAProxy响应码:        200:请求正常,响应正常,也就是正常响应码     301:配置使用的重定向,以下都是有关于重定向的一些响应码,不做解释     302:    &nb…

    2017-05-18
  • 第七周博客作业

    1、创建一个10G分区,并格式为ext4文件系统; (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl; [root@localhost tmp]# cat /proc/partitions major minor #blocks name 8 16 52428800 sdb 8 17 1049041…

    Linux干货 2017-03-06
  • 条件判断工具 test or [ ]

    概述         条件判断是学习shell脚本之前要掌握的重点基础。条件判断分为以下几类:文件判断、数值判断、字符判断。而文件判断还可以细分到:文件类型判断、文件权限判断、文件所属判断、文件之间属性判断;      &nbsp…

    Linux干货 2016-02-14
  • 笔记整理:权限管理3-ACL

    ACL 访问控制列表,并不是所有的Linux文件系统,都支持ACL。FAT文件系统也不支持ACL   ACL文件系统中,不支持chmod等命令。同时不能更改文件权限。不存在文件权限。 问题提出 只让wang用户,对该文件不能够访问,同时不影响其他任何用户对该文件的操作。   ACL特点 针对单一用户或群组,单一文件或目录,进行rwx权限设…

    Linux干货 2016-08-05
  • Bash shell 脚本编程全攻略(上篇)

    Bash shell 脚本编程全攻略(上篇)   什么是shell脚本呢? 当命令不在命令行上执行,而是通过一个文件执行时,该文件就称为shell脚本,脚本以非交互的方式运行。Shell脚本把命令通过一些语法组织起来,便能实现特定的功能。   Shell脚本主要运用在系统运维中,主要功能有: 自动化常用命令; 执行系统管理和故障排除; 创…

    Linux干货 2016-08-29
  • 8.3_Linux文件系统权限和特殊权限浅析

    什么是Linux文件系统权限? 在Linux中的每一个文件或目录都包含有访问权限,这些访问权限决定了谁能访问和如何访问这些文件和目录。 Linux文件系统权限的分类 Linux中的权限分为:read(读)、write(写)、execut(执行)三种权限 文件和目录表示的权限也各有不同 权限对于文件的意义: r: 可使用文件查看类工具获取其内容 w: 可修改内…

    Linux干货 2016-08-05