这周,我们学习了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:
# ——————————————
注:$1 位置变量,指代后面输入的第一个参数,使用echo和”>” 生成文件并导入模板内容,chmod +x给予文件可执行权限
下面的所有脚本都使用这个脚本创建,基本注释就可以省略了。
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%对比就行了,尴尬!
4.编写脚本/bin/per.sh,判断当前用户对指定的参数文件,是否不可读并且不可写
注:这个脚本一定要注意加入判断文件是否存在,不然如果文件不存在,也会显示为文件不可读且不可写。
5.编写脚本/root/bin/excute.sh ,判断参数文件是否为sh后缀的普通文件,如果是,添加所有人可执行权限,否则提示用户非脚本文件
注:[ =~ ]测试‘=~’前面的字符串能否被后面的字符串匹配,要注意以’.sh’结尾的表示方法,不知道你会不会错,反正我错了好多次。
shell脚本会在我们将来工作中经常使用到,一定要好好练习。
原创文章,作者:mayun,如若转载,请注明出处:http://www.178linux.com/83707