[ shell ] — if、for、while、utile、case、break、continue、函數、重定向——3

一、條件語句

a=10
b=20
#if
if [ $a == $b ]
then
    echo "兩數相等" 
fi

寫成一行:
if [ $a != $b ]; then echo "兩數不相等"; fi

#if else
if [ $a == $b ]
then
    echo "兩數相等" 
else
    echo "兩數不等" 
fi

#if else-if else
if [ $a > $b ]
then
    echo "a > b"
elif [ $a = $b ]
then
    echo "a = b"
else
    echo "a < b"
fi

二、for語句

for val in 1 2 3 
do
    echo "$val"
    echo "hi"
done

寫成一行:
for val in 1 2 3; do echo "$val"; echo "hi"; done;

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

三、let命令

let a=1+2
echo -e "$a\n"

b=8
let "b++"	# 雙引號可以省略,變量計算中不需要加上 $ 來表示變量
echo "$b"

四、while循環
4.1 一般格式

a=1
while (( $a < 5 ))
do
    echo "$a"
    let "a++"
done

4.2 while循環可用於讀取鍵盤信息

echo '按下 <CTRL-D> 退出' 
echo -n '輸入你最喜歡的網站名: ' 
while read FILM
do
    echo "是的!$FILM 是一個好網站" 
done

4.3無限循環,三種方法

while :
do
    echo "good!"
done

------------------
while true
do
    echo "good!"
done

------------------
for (( ; ; ))
do
    echo "good!"
done

五、until循環,與while相反,不滿足條件就執行循環體

a=0
until [  $a -gt 5 ] 	# 等同於 until (( $a > 5 ))
#until (( $a > 5 ))
do
    echo "$a"
    a=`expr $a + 1`
done

六、case

c=3

case $c in
    1) echo "you choose 1"
       echo "congra"
    ;;  
    2) echo "you choose 2"
       echo "congratulation"
    ;;  
    *) echo "your choose not 1-2"
    ;;   
esac		# case反過來 esac作爲結束
read aNum		# 鍵盤輸入
echo "$aNum"	# 打印輸入的值

七、break,跳出所有循環

while :
do
    echo -n "輸入值:"
    read aNum
    case $aNum in
        1|2|3|4|5) echo "輸入值爲 $aNum "
        ;;  
        *) echo "輸入值不在1-5之間,game over!"
        break
        ;;  
    esac
done

# echo -n 不換行輸出

八、continue,跳出當前循環

while :
do
    echo -n "輸入值:"
    read aNum
    case $aNum in
        1|2|3|4|5) echo "輸入值爲 $aNum "
        ;;  
        *) echo "輸入值不在1-5之間" 
        continue
        echo "game over!"
        ;;  
    esac
done

九、shell函數
9.1.函數定義

demoFun() {
    echo -e "This is my first function!\n"
}

9.2.有返回值

#函數定義
add() {
    echo -n "1th num:"
    read num1
    echo -n "2th num:"
    read num2
    return $(($num1 + $num2))
}

add		# 函數調用
echo "num1 + num2 = $?" 	# 調用該函數後通過 $? 來獲得返回值

9.3.帶參數

pare() {
    echo "1th $1" 
    echo "2th $2" 
}

pare 3 5 	# 調用時帶參數

3.輸出重定向
history > 1 # 將history輸出的內容替換1中的內容

history >> 1 # 將history輸出的內容放到1中,將新內容添加在文件末尾

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章