1. 程式人生 > >指令碼基礎2

指令碼基礎2

在指令碼內
#!/bin/bash

read -p "請輸入一個數字" num
if [ $num -eq 60 ];then
    echo "猜對了"
    else
        echo "猜錯了"
fi

 

這是一個完整的但分值if條件語句,兩個動作必定執行一個。if如果,then那麼,else否則,fi結尾。

 

 

 

在指令碼內
#!/bin/bash

read -p "請輸入一個數字" num  這是讓使用者給num賦值
if [ $num -eq 60 ];then
  echo "猜對了"
elif [ $num -lt 60 ];then
  echo "猜小了"   else echo "猜錯了" fi

 

這是一個多分支if條件語句,三個動作必定也只能執行一個,寫多分支語句時要注意,寫第一個條件的範圍不能涵蓋第二個條件,優先順序是從上到下執行的,符合一個就不會再往下看其他條件了。

 

 

 

在指令碼內
#!/bin/bash

for i in 1 2 3 4 5
do
    echo $i
done

 

for是迴圈,讓i從1 2 3 4 5裡依次迴圈取值,有幾個值就取幾次。do是開始做什麼,done是結束,他們之間叫作一個迴圈體。

 

 

 

在指令碼內
#!/bin/bash

for ((i=0;i<10;i++))
do
  echo $i
done

 

寫兩個小括號是讓shell支援C語言,首先i賦值0進入迴圈體,輸出0到螢幕,然後執行i++這個動作(在自身+1),判斷i此時符不符合小於10的條件,如果不符合就會進行下一輪迴圈,直到符合條件退出迴圈體。

 

 

 

在指令碼內
#!/bin/bash

for ((i=0;;i++))
do
  echo $i
done

 

兩個分號之間什麼都不加就是無限迴圈,因為中間判斷是空的。

 

 

 

在指令碼內
#
!/bin/bash for i in {1..10} do   echo $i
  let i
++ 或
  
((i++))
done

 

let i++ 是讓shell認識他,兩個小括號是讓shell支援C語言。

 

 

 

 
 
在指令碼內
#!/bin/bash
read i
while [ $i -lt 10 ]
do
    echo $i
    let i++
    sleep 1
done

 

這是while迴圈,後面跟的是終止迴圈的條件,如果使用者輸入0,那麼會輸入0~9,sleep 1 是讓等待1秒後進入下次迴圈

如果是while : 那麼就是無限迴圈終止條件為空。

 

 

 

在指令碼內
#!/bin/bash

read i
case $i in
        start)
            echo "服務啟動"
        ;;
        stop)
            echo "服務停止"
        ;;
        *)
            echo "重新輸入"
        ;;
esac

 

case是類似if的一種語句,他們最大的區別就是case是平級的,沒有優先順序,通常case用來做功能選單和服務啟動指令碼。

 

 

 

在指令碼內
#!/bin/bash

function (也可以不寫) aihao(){
echo "吃飯"
echo "睡覺"
echo "打豆豆"
}

aihao

 

這個是函式體的格式,在指令碼內如果不呼叫函式體,是不會有任何作用的,呼叫時寫幾次函式體的名字就呼叫幾次。

 

 

 

在指令碼內還有四種迴圈的控制語句

exit:終止整個指令碼

break:退出單個距離最近的迴圈體

continue:退出一次迴圈,不退出迴圈體

return:退出整個函式體