一些簡單的shell指令碼例子

來源:互聯網
上載者:User

標籤:shell指令碼

         對於剛開始學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

          


              可以查看連接埠和進程,也可以start和stop的時候                                    建立檔案夾,然後這裡查看有沒有這兩個檔案,有哪個就是哪個

 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.txt給root發送郵件主題為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


#輸出21~57間的奇數 並統計個數


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例子,希望能對大家有所協助,有不足之處,請多指教。

一些簡單的shell指令碼例子

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.