对于刚开始学shell脚本的人来说,建立编程思维很重要,需要能够把自己需要做的事情,用编程的方式表达出来,下面是我学习和搜集的一些例子,对于刚刚开始接触的人,或许有一定的帮助。

    

求任意数的和或乘积,先定义函数,任意数的和、乘积,然后通过case结构再定义变量,调用函数。

hei(){

                                                  

       x=1


       while [ $# -gt 0 ]


       do


       x=`expr $x \* $1`


       shift


done


       echo $x


}


he(){


 

 

       x=0


        while [ $# -gt 0 ]


       do


       x=`expr $x + $1`


       shift


done


       echo $x


}


read -p "+ or *" lx


case "$lx" in


"+")


       he  $*;;


"*")


       hei $*;;


*)


       echo "no passage";;


esac


~       

 使用case+function  一起给源码的网站服务编写启动脚本,让用户可以通过如下方式,对编码包提供的网站服务进行启动、停止、服务。()

1 #!/bin/bash


  2 #chkconfig: - 85 15


  3 #description: The Apache HTTP Server is an efficient and extensible  \


  4#              server implementing thecurrent HTTP standards.


  5 #processname: httpd


  6start(){


 7        /user/loacal/httpd/bin/apachectl start


 8         echo "source httpdrunning .....OK"


 9         echo


 10 }


 11


 12stop(){


 13        /usr/local/httpd/bin/apachectl stop


 14        echo "source httpd running .....NO"


 15        echo


 16 }


 17status(){


 18        netstat -anput | grep :80 &>/dev/null


 19        if [ $? -eq 0 ]; then

          


              可以查看端口和进程,也可以startstop的时候                                    创建文件夹,然后这里查看有没有这两个文件,有哪个就是哪个

 20        echo "正在运行"


 21        esle


 22         echo "已经停止"


 23fi


 24 }


 25case "S1" in


 26"start")


 27        start;;


 28"stop")


 29        stop;;


 30"status")


 31        status;;


 32*)


 33        echo "$0 values in start | stop | status "


esac

 

 

 

简单的shell脚本,输入年龄和名字,

#!/bin/bash


read -p "请输入你的名字" name


read -p "请输入你的年龄" age


[ ! -z $name ] && echo"$name" || echo "你没有输入名字"

      

[ ! -z $age ] && echo"$age" || echo " 你没有输入年龄"


 

 

输入卡号密码,

#!/bin/bash


read -p "请输入你的  card num " num


stty -echo

                  关闭屏幕输出

read -p "请输入你的password "  passwd


stty echo


echo


echo $num $passwd >/tmp/a.txt

          将输出内容重定向到a.txt

mail -s "psswd"  root < /tmp/a.txt

           a.txtroot发送邮件主题为psswd

 

 

server_on.sh   如果一个服务没有运行,就启动这个服务,如果服务                                    正运行输出服务正在运行执行方式如下:


server_on.sh   httpd


server_on.sh   crond

#!/bin/bash


service $1 status &> /dev/null


if  [$? -ne 0 ];


then


       service $1 start


fi


echo " 服务正在运行"


~                

 

根据学生的考试成绩,判断学生的优劣。


成绩的分数在1~100之间


 

 

 1~59      要补考


    60~79    


    80~90     


    91~100   有奖励

  1#!/bin/bash


  2read -p "请输入你的成绩" num


 3   if [ $num -ge 1 ]&>/dev/null && [ $num -le 100 ];


(注释:因为如果输入为空或者字母其它,会报错,所以把输出结果重定向一下就可以解决)

  4then


 5         if [ $num -ge 1 ]  && [ $num -le 59 ];


  6then


 7         echo "需要补考"


 8   elif [ $num -ge 60 ]&& [ $num -le 79 ];


  9then


 10        echo ""


 11  elif [ $num -ge 80 ] && [ $num -le 90 ] ;


 12then


 13        echo ""


 14   elif [ $num -ge 91 ] && [ $num -le 100 ];


 15then


 16        echo "有奖励"


 17else


 18        "请输入你的成绩   范围1-100"


 19fi


 20  else


 21        echo "请输入你的成绩   范围1-100"


 22fi


~                                                                                                                              


~    

 

添加十个系统帐号

 

#!/bin/bash


name=zeng


for n in `seq -w 10`

       seq -w   根据最大数设置宽度,for 01 02   10

do


       useradd $name$n


done

                      


#!/bin/bash


#输出2157间的奇数 并统计个数


x=0


for i in `seq  21  57`


do


   if [ `expr $i % 2` -ne 0  ];then


      echo $i


      let x++


   fi


done


echo $x

 

 

 

 

输出1-100间的偶数

 

 

#!/bin/bash


for n in `seq 100`


do


  if[ `expr $n % 2` -eq 0 ];


then


   echo $n


fi


done


~         

 

 

 

输出1-20

#!/bin/bash


i=20


while [ $i -ge 1 ]


do


       echo $i


       let i--


done


echo 


~           

 

 

使用while循环输出ip地址  192.168.4.1-192.168.4.20

#!/bin/bash


ip=192.168.4.


i=20


while [ $i -ge 1 ]


do


       echo $ip$i


       let i--


done


echo 


~             

 

 

检查192.168.4.0/24  网段任一主机是否在线

#!/bin/bash


ip=192.168.4.


i=1


until [ $i -gt 254 ]


do


       ping $ip$i


       let i++


done


echo  

      以上就是我收集的一些shell例子,希望能对大家有所帮助,有不足之处,请多指教。