[ 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中,将新内容添加在文件末尾

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