linux循环程序举例,shell编程的常见实例

1.写一个脚本/root/bin/argsnum.sh 用户输入一个文件路径并查找文件中空白行的个数

,如果用户没有输入路径则自动退出

实验结果如下:

3c8ce6380daa33c267ccb0e2e66a02de.png

如果不输入任何路径程序会自动退出:实验结果如下:

3c8ce6380daa33c267ccb0e2e66a02de.png

用其他方法验证是不是有两行空行:

3c8ce6380daa33c267ccb0e2e66a02de.png

3c8ce6380daa33c267ccb0e2e66a02de.png

(个人总结):

1.   read 命令,如果用-p来做提示信息,则不支持\n换行,这时需要用echo命令,echo它  有自动换行,同时也支持\n   -t  timeout定义多长时间超时默认计时单位是分钟。-n定义输入的的字符数,超出输入后会,read会自动退出,-s隐藏输入时的字符,其实输入有的只是设置成了和背景色一样的的前景色。

2.   [[ -z “STRING”]] 字符串是否为空,空则为真.  [[ -n“STRING” ]]字符串是否为空,不空则为真——-注意方括号里面的两边是有空格的

3.   用grep -c做统计grep -c“^$” $fpath  和grep“^$” $fpath |wc  -l

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

3c8ce6380daa33c267ccb0e2e66a02de.png

3c8ce6380daa33c267ccb0e2e66a02de.png

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

3c8ce6380daa33c267ccb0e2e66a02de.png

3c8ce6380daa33c267ccb0e2e66a02de.png

其他实现方式df | tr -s ' ' | cut -d' ' -f5 |sed 1d |sort -nr |head -1但是通用性比较差

3c8ce6380daa33c267ccb0e2e66a02de.png

(个人总结):

灵活应用tr命令中的tr -s‘ ’删除重复的空格。

应用sed  #d去删除某一行

4、编写脚本/root/bin/links.sh,显示正连接本主机的每个远程主机的IPv4地址和连接数,并按连接数从大到小排序

netstat -nt |cut -d: -f1|tr -s ' '|grep "[0-9]" |cut -d' ' -f4

3c8ce6380daa33c267ccb0e2e66a02de.png

5、编写脚本/root/bin/backup.sh,可实现每日将/etc/目录备份到/root/etcYYYY-mm-dd中

#!/bin/bash

time=$(date '+%F')

cp -r /etc/ /root/etc$time

3c8ce6380daa33c267ccb0e2e66a02de.png

6、 写一个脚本/root/bin/sumid.sh,计算/etc/passwd文件中的第10个用户和第20用户的           之和

3c8ce6380daa33c267ccb0e2e66a02de.png

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

3c8ce6380daa33c267ccb0e2e66a02de.png

8、/root/bin/sumfile.sh,统计/etc, /var, /usr目录中共有多少个一级子目录和文件

法一:

3c8ce6380daa33c267ccb0e2e66a02de.png

法二:

3c8ce6380daa33c267ccb0e2e66a02de.png

(个人总结):

比较灵活的应用位置变量来接受用户动态传过来的三个值,且使用了echo -en进行取消自动换行和按需手动换行

9、写一个脚本/root/bin/hostping.sh,接受一个主机的IPv4地址做为参数,测试是否可连通。如果能ping通,则提示用户“该IP地址可访问”;如果不可ping通,则提示用户“该IP地址不可访问

3c8ce6380daa33c267ccb0e2e66a02de.png

(个人总结)

此练习中用到了-c  -W两个选项,-c是定义ping的次数,-W是定义ping的时间,而&> /dec/null是重定向到一个空设备中而不用显示出来

10、指定文件做为参数,判断文件是否为.sh后缀,如果是,添加x权限

#!/bin/bash

echo $1 | grep .*\.sh$ |chmod +x $1 && echo 权限x已经附加|| echo你输入的目录不是.sh

3c8ce6380daa33c267ccb0e2e66a02de.png

11、判断硬盘的每个分区空间和inode的利用率是否大于80,如果是,发邮件通知root磁  盘满

[ `df -i |sed 1d |tr -s ' '|cut -d ' ' -f5|cut -d% -f1|sort -nr|head -1` -ge 80 ] || [ `df |sed 1d |tr -s ' '|cut -d ' ' -f5|cut -d% -f1 |sort -nr|head -1` -gt 80 ] && echo 磁盘将爆满请检查磁盘Inode或容量

3c8ce6380daa33c267ccb0e2e66a02de.png

[ `df -i |sed 1d |tr -s ' '|cut -d ' ' -f5|cut -d% -f1|sort -nr|head -1` -ge 8 ] || [ `df |sed 1d |tr -s ' '|cut -d ' ' -f5|cut -d% -f1 |sort -nr|head -1` -gt 80 ] && echo磁盘将爆满请检查磁盘Inode或容量

测试二、把磁盘条件中80改成8提示报警

3c8ce6380daa33c267ccb0e2e66a02de.png

12、判断输入的IP是否为合法IP

#!/bin/bash

echo 请输入IP地址

read ips

echo "$ips" |egrep'^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$' && echo 你输入的地址是合法地址||echo你输入的IP地址有错

3c8ce6380daa33c267ccb0e2e66a02de.png

3c8ce6380daa33c267ccb0e2e66a02de.png

13、计算1+2+3+…+100

3c8ce6380daa33c267ccb0e2e66a02de.png

14、输入起始值A和最后值B,计算从A+(A+1)…+(B-1)+B的总和

#!/bin/bash

echo 请输入要A B

read -p "你输入的A值为" A

read -p "你输入的B值为" B

[ $A -ge $B ]&&exit || echo `seq $A $B` |tr ' ' + |bc

3c8ce6380daa33c267ccb0e2e66a02de.png

3c8ce6380daa33c267ccb0e2e66a02de.png

(个人总结):用在echo中调用seq命令能够灵活的横行打印

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值