1、编写脚本argsnum.sh, 接受一个文件路径作为参数;如果参数个数小于1,则提示用户“至少应该给一 个参数”,并立即退出;如果参数个数不小于1,则显示第一个参数所指向的文件中的空白行数!
代码:
#!/bin/bash
echo "请输入一个文件路径:" $*
if [ "$#" -lt 1 ];then
echo "至少应该给一个参数。"
exit
else
count=`cat $1 | grep -c '^$'`
echo "第一个参数的空白数量:$count"
fi
结果:
[root@server02 data]#bash argsnum.sh
请输入一个文件路径:
至少应该给一个参数。
[root@server02 data]#bash argsnum.sh /etc/rc.d/init.d/functions
请输入一个文件路径: /etc/rc.d/init.d/functions
第一个参数的空白数量:91
2、编写脚本hostping.sh,接受-个主机的IPv4地址做为参数,测试是否可连通。如果能ping通, 则提示用户"该IP地址可访问";如果不可ping通,则提示用户“该IP地址不可访问”。
代码:
#!/bin/bash
. /data/color.sh
read -p "请输入一个主机ipv4的地址:" ipaddress
if [[ "$ipaddress" =~ ^(([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$ ]];then
$Green $ipaddress是一个合法的主机ipv4的地址! $End
ping -c1 -W1 $ipaddress &> /dev/null
if [ `echo $? ` -eq 0 ];then
$Green ${ipaddress}:该ip地址可访问!$End
exit
else
$Red${ipaddress}:该ip地址不可访问!$End
exit
fi
else
$Red $ipaddress是一个不合法的主机ipv4的地址!$End
fi
结果:
[root@server02 data]#bash hostping.sh
请输入一个主机ipv4的地址:10.1.1.8
10.1.1.8是一个合法的主机ipv4的地址!
10.1.1.8:该ip地址可访问!
3、编写脚本checkdisk.sh,检查磁盘分区空间和inode使用率,如果超过80%,就发广播警告空间将满!
代码:
#!/bin/bash
diskSpace=`df -hT | grep '^/dev/sd'| grep -o -P "[0-9]+(?=%)"| sort -nr | head -1`
diskInode=` df -i | grep '^/dev/sd'| grep -o -P "[0-9]+(?=%)"| sort -nr | head -1`
if [ "$diskSpace" -gt 80 -o "$diskInode" -gt 80 ];then
echo "diskSpace is $diskSpace or disInode is $diskInode will be out of stock,Please Clean up!" > /data/Warning.txt
mail -s "Warning Tile" root < /data/Warning.txt
exit
else
echo "There are many Space !! "
fi
结果:
[root@server02 data]#bash checkdisk.sh
There are many Space !!
4、编写脚本per.sh,判断当前用户对指定参数文件,是否不可读并且不可写
代码:
#!/bin/bash
read -p "请指定参数文件:" File
if ! [ -e "$File" ];then
echo "该文件格式错误,请重新填写!!"
elif [ -d "$File" ];then
echo "$File is a folder!!"
else
if ! [ -r "$File" -a -w "$File" ];then
echo "$File 是不可读并且不可写的!"
else
echo "$File 是可读的并且可写的!!"
fi
fi
结果:
[root@server02 data]#bash per.sh
请指定参数文件:/etc/
/etc/ is a folder!![root@server02 data]#bash per.sh
请指定参数文件:/usr/local/===-0skflaf
该文件格式错误,请重新填写!![root@server02 data]#bash per.sh
请指定参数文件:/etc/rc.d/init.d/functions
/etc/rc.d/init.d/functions 是可读的并且可写的!!
5、编写脚本excute.sh,判断参数文件是否为sh后缀的普通文件,如果是,添加所有人可执行权限,否则提示用户非脚本文件。
代码:
#!/bin/bash
read -p "请输入文件名:" File
if [ -e "$File" ];then
if [ -d "$File" ];then
echo "$File is a folder!!"
else
if [[ "$File" =~ .*\.sh ]];then
chmod +x $File
else
echo "非脚本文件!!"
fi
fi
else
echo "文件名格式错误或者该文件不存在!! "
exit
fi
结果:
[root@server02 data]#ls
argsnum.sh chook_rabbit.sh Doyou.sh f2.sh mysql per.sh system_info.sh bmi.sh color.sh excute.sh filetype.sh nianling.txt rm.sh Warning.txt
checkdisk.sh createuser.sh f11.sh hostping.sh nologin.sh son.sh yesorno.sh
checkint.sh diskSpaceInode.sh f1.sh login.sh parent.sh system_info_bak.sh[root@server02 data]#bash excute.sh
请输入文件名:/data/Warning.txt
非脚本文件!![root@server02 data]#ll /data/createuser.sh
-rwxr-xr-x. 1 root root 599 8月 9 00:02 /data/createuser.sh
6、编写脚本nologin.sh和login.sh,实现禁止和允许普通用户登录系统
①nologin.sh
代码:
#!/bin/bash
read -p "请输入普通用户名:" User
id $User &> /dev/null
if [ `echo $?` -eq 0 ];then
usermod $User -s /sbin/nologin
cat /etc/passwd | grep $User
echo "用户 ${User}已经被禁止登录了!!"
else
echo "${User}不存在!!"
exit
fi
结果:
[root@server02 data]#bash nologin.sh
请输入普通用户名:natsu
natsu:x:1002:1002::/home/natsu:/sbin/nologin
用户 natsu已经被禁止登录了!!
[root@server02 data]#bash nologin.sh
请输入普通用户名:yeye
yeye不存在!!
②login.sh
代码:
#!/bin/bash
read -p "请输入普通用户的用户名:" User
id $User &> /dev/null
if [ `echo $?` -eq 0 ];then
usermod $User -s /bin/bash
cat /etc/passwd | grep $User
echo "用户${User} 已经可以正常登录了!!"
else
echo "用户${User}不存在呀!!"
fi
结果:
[root@server02 data]#bash login.sh
请输入普通用户的用户名:natsu
natsu:x:1002:1002::/home/natsu:/bin/bash
用户natsu 已经可以正常登录了!!
[root@server02 data]#bash login.sh
请输入普通用户的用户名:yeye
用户yeye不存在呀!!
7.求自身的身体质量指标bmi
代码:
#!/bin/bash
##求身体质量指标bmi
read -p "请输入你的身高(以m(米)为单位):" height
if [[ ! "$height" =~ ^[0-2]\.?[0-9]{,2}$ ]];then
echo "您输入的身高有误,请重新输入!"
exit 1
fi
read -p "请输入你的体重(以kg(千克)为单位):" weight
if [[ ! "$weight" =~ ^[0-9]{1,3}$ ]];then
echo "您输入的体重有误,请重新输入! "
exit 1
fi
Bmi=`echo $weight/$height^2 | bc`
if [ "$Bmi" -le 18 ];then
echo "您太瘦了,请您多吃些!"
elif [ "$Bmi" -gt 18 -a "$Bmi" -lt 24 ];then
echo "您的身材太棒了!请多多保持!"
else
echo "您已肥胖了,注意饮食,请到操场运动!!"
fi
结果:
[root@server02 data]#bash bmi.sh
请输入你的身高(以m(米)为单位):1.65
请输入你的体重(以kg(千克)为单位):45
您太瘦了,请您多吃些!
[root@server02 data]#bash bmi.sh
请输入你的身高(以m(米)为单位):1.83
请输入你的体重(以kg(千克)为单位):65
您的身材太棒了!请多多保持!
8.编写脚本yesorno.sh,提示用户输入yes或no,并判断用户输入的是yes还是no,或是其它信息
代码:
#!/bin/bash
read -p "Are you still single ,yes or no ? -->" Input
if [[ "$Input" =~ [Yy]|[Yy][Ee][Ss] ]];then
echo "yes,you're right!"
elif [[ "$Input" =~ [Nn]|[Nn][Oo] ]];then
echo "No,I have a girlfriend,who is called Mystrey!"
else
echo "Input error,Input again please!!"
fi
结果:
[root@server02 data]#bash yesorno.sh
Are you still single ,yes or no ? -->yes
yes,you're right!
[root@server02 data]#bash yesorno.sh
Are you still single ,yes or no ? -->no
No,I have a girlfriend,who is called Mystrey!
[root@server02 data]#bash yesorno.sh
Are you still single ,yes or no ? -->skflksf
Input error,Input again please!!
9.编写脚本checkint.sh,判断用户输入的参数是否为正整数
代码:
#!/bin/bash
read -p "请输入一个数字:" Number
if [[ "$Number" =~ ^-[0-9]{,10}\.?[0-9]{,10}$ ]];then
echo "${Number}是负数! "
elif [[ "$Number" =~ ^[0-9]{,10}\.[0-9]{,10}$ ]];then
echo "${Number}是小数! "
elif [[ "$Number" =~ ^[0-9]+$ ]];then
echo "${Number}是正整数! "
else
echo "格式错误,请重新输入!"
fi
结果:
[root@server02 data]#bash checkint.sh
请输入一个数字:1
1是正整数!
[root@server02 data]#bash checkint.sh
请输入一个数字:1.00
1.00是小数!
[root@server02 data]#bash checkint.sh
请输入一个数字:-1
-1是负数!
[root@server02 data]#bash checkint.sh
请输入一个数字:-1.00
-1.00是负数!