目錄
一、shell概述
二、流程控制
2.1 if判斷
2.2 case語句
2.3 for循環
2.4 while循環
一、shell概述
Shell是一個指令行解釋器,可以接收應用程式和使用者的指令,然後調用作業系統的核心。
Shell還是一個功能相當強大的程式設計語言,易編寫、易調試、靈活性強。

二、流程控制
2.1 if判斷
基本文法
if [ 條件判斷式 ];then
程式
fi
或者
if [ 條件判斷式 ]
then
程式
elif [ 條件判斷式 ]
then
程式
else
程式
fi
(1)[ 條件判斷式 ] 中括号和條件判斷式之間必須有空格
(2)if後要有空格
實操
(1)輸入一個數字,如果是1,則輸出 zhangsan,如果是2,則輸出 lisi,如果是其它,都輸出 shayebushi。
// 建立一個文本if.sh
[[email protected] datas]# touch if.sh
// 編輯if.sh文本
[[email protected] datas]# vim if.sh
#!/bin/bash
if [ $1 -eq "1" ]
then
echo "zhangsan"
elif [ $1 -eq "2" ]
then
echo "lisi"
else
echo "sha ye bu shi"
fi
// 執行if.sh腳本
[[email protected] datas]# bash if.sh 1
zhangsan
[[email protected] datas]# bash if.sh 2
lisi
[[email protected] datas]# bash if.sh 4
sha ye bu shi
2.2 case語句
基本文法
case $變量名 in
"值1")
如果變量的值等于值1,則執行程式1
;;
"值2")
如果變量的值等于值2,則執行程式2
;;
…省略其他分支…
*)
如果變量的值都不是以上的值,則執行此程式
;;
esac
(1)case行尾必須為單詞“in”,每一個模式比對必須以右括号“)”結束
(2)雙分号“;;”表示指令序列結束,相當于java中的break
(3)最後的“*)”表示預設模式,相當于java中的default
實操
(1)輸入一個數字,如果是1,則輸出 zhangsan,如果是2,則輸出 lisi,如果是其它,輸出 hello shell。
// 建立一個文本case.sh
[[email protected] datas]# touch case.sh
// 編輯case.sh文本
[[email protected] datas]# vim case.sh
#!/bin/bash
case $1 in
"1")
echo "zhangsan"
;;
"2")
echo "lisi"
;;
*)
echo "hello shell"
;;
esac
// 運作case.sh腳本
[[email protected] datas]# bash case.sh 1
zhangsan
[[email protected] datas]# bash case.sh 2
lisi
[[email protected] datas]# bash case.sh 5
hello shell
2.3 for循環
基本文法 1
for ((初始值;循環控制條件;變量變化))
do
程式
done
實操
(1)從1加到100。
// 建立一個文本for1.sh
[[email protected] datas]# touch for1.sh
// 編輯for1.sh
[[email protected] datas]# vim for1.sh
#!/bin/bash
s=0
for((i=0;i<=100;i++))
do
s=$[$s+$i]
done
// 執行for1.sh腳本
[[email protected] datas]# bash for1.sh
5050
基本文法 2
for 變量 in 值1 值2 值3…
do
程式
done
實操
(1)列印所有輸入參數。
// 建立一個文本for2.sh
[[email protected] datas]# touch for2.sh
// 編輯for2.sh文本
[[email protected] datas]# vim for2.sh
#!/bin/bash
#列印數字
for i in $*
do
echo "zhangsan love $i"
done
for j in $@
do
echo "lisi love $j"
done
// 執行for2.sh腳本
[[email protected] datas]# bash for2.sh honghong luelue baibai
zhangsan love honghong
zhangsan love luelue
zhangsan love baibai
lisi love honghong
lisi love luelue
lisi love baibai
$*和$@都表示傳遞給函數或腳本的所有參數,不被雙引号“”包含時,都以$1 $2 …$n的形式輸出所有參數。
// 建立一個文本for3.sh
[[email protected] datas]# touch for3.sh
// 編輯for3.sh文本
[[email protected] datas]# vim for3.sh
#!/bin/bash
#列印數字
for i in "$*" // "honghong luelue baibai"
do
echo "zhangsan love $i"
done
for j in $@ // "honghong" "luelue" "baibai"
do
echo "lisi love $j"
done
// 執行for3.sh腳本
[[email protected] datas]# bash for3.sh honghong luelue baibai
zhangsan love honghong luelue baibai
lisi love honghong
lisi love luelue
lisi love baibai
當它們被雙引号“”包含時,“$*”會将所有的參數作為一個整體,以“$1 $2 …$n”的形式輸出所有參數;“$@”會将各個參數分開,以“$1” “$2”…”$n”的形式輸出所有參數。
2.4 while循環
基本文法
while [ 條件判斷式 ]
do
程式
done
實操
(1)從1加到100。
// 建立一個文本while.sh
[[email protected] datas]# touch while.sh
// 編輯文本while.sh
[[email protected] datas]# vim while.sh
#!/bin/bash
s=0
i=1
while [ $i -le 100 ]
do
s=$[$s+$i]
i=$[$i+1]
done
echo $s
// 執行while.sh腳本
[[email protected] datas]# bash while.sh
5050