if 判斷
1.基本語法
if [ 條件判斷式 ];then
程序
fi
或者
if [ 條件判斷式 ]
then
程序
fi
注意事項:
(1)[ 條件判斷式 ],中括號和條件判斷式之間必須有空格
(2)if後要有空格
2.案例實操
(1)輸入一個數字,如果是1,則輸出banzhang zhen shuai,如果是2,則輸出cls zhen mei,如果是其它,什麼也不輸出。
[root@hadoop101 datas]$ touch if.sh
[root@hadoop101 datas]$ vim if.sh
#!/bin/bash
if [ $1 -eq "1" ]
then
echo "banzhang zhen shuai"
elif [ $1 -eq "2" ]
then
echo "cls zhen mei"
fi
[root@hadoop101 datas]$ chmod 777 if.sh
[root@hadoop101 datas]$ ./if.sh 1
banzhang zhen shuai
case 語句
1.基本語法
case $變量名 in
"值1")
如果變量的值等於值1,則執行程序1
;;
"值2")
如果變量的值等於值2,則執行程序2
;;
…省略其他分支…
*)
如果變量的值都不是以上的值,則執行此程序
;;
esac
注意事項:
1) case行尾必須爲單詞“in”,每一個模式匹配必須以右括號“)”結束。
2) 雙分號“;;”表示命令序列結束,相當於java中的break。
3) 最後的“*)”表示默認模式,相當於java中的default。
2.案例實操
(1)輸入一個數字,如果是1,則輸出banzhang,如果是2,則輸出cls,如果是其它,輸出renyao。
[root@hadoop101 datas]$ touch case.sh
[root@hadoop101 datas]$ vim case.sh
!/bin/bash
case $1 in
"1")
echo "banzhang"
;;
"2")
echo "cls"
;;
*)
echo "renyao"
;;
esac
[root@hadoop101 datas]$ chmod 777 case.sh
[root@hadoop101 datas]$ ./case.sh 1
1
7.3 for 循環
1.基本語法1
for (( 初始值;循環控制條件;變量變化 ))
do
程序
done
2.案例實操
(1)從1加到100
[root@hadoop101 datas]$ touch for1.sh
[root@hadoop101 datas]$ vim for1.sh
#!/bin/bash
s=0
for((i=0;i<=100;i++))
do
s=$[$s+$i]
done
echo $s
[root@hadoop101 datas]$ chmod 777 for1.sh
[root@hadoop101 datas]$ ./for1.sh
“5050”
3.基本語法2
for 變量 in 值1 值2 值3…
do
程序
done
4.案例實操
(1)打印所有輸入參數
[root@hadoop101 datas]$ touch for2.sh
[root@hadoop101 datas]$ vim for2.sh
#!/bin/bash
#打印數字
for i in $*
do
echo "ban zhang love $i "
done
[root@hadoop101 datas]$ chmod 777 for2.sh
[root@hadoop101 datas]$ bash for2.sh cls xz bd
ban zhang love cls
ban zhang love xz
ban zhang love bd
(2)比較$*和$@區別
(a)$*和$@都表示傳遞給函數或腳本的所有參數,不被雙引號“”包含時,都以$1 $2 …$n的形式輸出所有參數。
[root@hadoop101 datas]$ touch for.sh
[root@hadoop101 datas]$ vim for.sh
#!/bin/bash
for i in $*
do
echo "ban zhang love $i "
done
for j in $@
do
echo "ban zhang love $j"
done
[root@hadoop101 datas]$ bash for.sh cls xz bd
ban zhang love cls
ban zhang love xz
ban zhang love bd
ban zhang love cls
ban zhang love xz
ban zhang love bd
(b)當它們被雙引號“”包含時,“$*”會將所有的參數作爲一個整體,以“$1 $2 …$n”的形式輸出所有參數;“$@”會將各個參數分開,以“$1” “$2”…”$n”的形式輸出所有參數。
[root@hadoop101 datas]$ vim for.sh
#!/bin/bash
for i in "$*"
#$*中的所有參數看成是一個整體,所以這個for循環只會循環一次
do
echo "ban zhang love $i"
done
for j in "$@"
#$@中的每個參數都看成是獨立的,所以“$@”中有幾個參數,就會循環幾次
do
echo "ban zhang love $j"
done
[root@hadoop101 datas]$ chmod 777 for.sh
[root@hadoop101 datas]$ bash for.sh cls xz bd
ban zhang love cls xz bd
ban zhang love cls
ban zhang love xz
ban zhang love bd
7.4 while 循環
1.基本語法
while [ 條件判斷式 ]
do
程序
done
2.案例實操
(1)從1加到100
[root@hadoop101 datas]$ touch while.sh
[root@hadoop101 datas]$ vim while.sh
#!/bin/bash
s=0
i=1
while [ $i -le 100 ]
do
s=$[$s+$i]
i=$[$i+1]
done
echo $s
[root@hadoop101 datas]$ chmod 777 while.sh
[root@hadoop101 datas]$ ./while.sh
5050
第8章 read讀取控制檯輸入
1.基本語法
read(選項)(參數)
選項:
-p:指定讀取值時的提示符;
-t:指定讀取值時等待的時間(秒)。
參數
變量:指定讀取值的變量名
2.案例實操
(1)提示7秒內,讀取控制檯輸入的名稱
[root@hadoop101 datas]$ touch read.sh
[root@hadoop101 datas]$ vim read.sh
#!/bin/bash
read -t 7 -p "Enter your name in 7 seconds " NAME
echo $NAME
[root@hadoop101 datas]$ ./read.sh
Enter your name in 7 seconds xiaoze
xiaoze