linux脚本小练习-shell编程(if的用法)

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是负数! 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值