第四章、流程控制
4.1 簡單流程控制語句
4.1.1單分支if語句
語法格式:if [ 條件 ]
單一條件只有一個輸出
#!/bin/bash
#單if語句使用場景
if [ "$1" == "nan" ]
then
echo "您的性別是 男"
fi
4.1.2雙分支if語句
語法格式
if [ 條件 ]
then
指令1
else
指令2
if
4.1.3多分支if語句
語法格式:
if [ 條件 ]
then
指令1
elif [ 條件2 ]
then
指令2
else
指令3
fi
多if語句生產場景:服務的啓動
#!/bin/bash
# 多if語句的使用場景
if [ "$1" == "start" ]
then
echo "服務啓動中..."
elif [ "$1" == "stop" ]
then
echo "服務關閉中..."
elif [ "$1" == "restart" ]
then
echo "服務重啓中..."
else
echo "$0 腳本的使用方式: $0 [ start | stop | restart ]"
4.1.4case選擇語句
語法格式:
case 變量名 in
值1)
指令1
;;
值2)
指令2
;;
值3)
指令3
;;
esac
語句示例:
# cat case.sh
#!/bin/bash
# case語句使用場景
case "$1" in
"start")
echo "服務啓動中..."
;;
"stop")
echo "服務關閉中..."
;;
"restart")
echo "服務重啓中..."
;;
*)
echo "$0 腳本的使用方式: $0 [ start | stop | restart ]"
;;
esac
4.1.5for循環語句
語法結構:
for 值 in 列表
do
執行語句
done
示例:遍歷文件
#!/bin/bash
# for語句的使用示例
for i in $(ls /root)
do
echo "${i}"
done
4.1.6while循環語句
語法結構:
while 條件
do
執行語句
done
條件的類型:
命令、[[ 字符串表達式 ]]、(( 數字表達式 ))
示例:
#!/bin/bash
# while的示例
a=1
while [ "${a}" -lt 5 ]
do
echo "${a}"
a=$((a+1))
done
4.1.7until循環語句
語法結構:
until 條件
do
執行語句
done
示例:
#!/bin/bash
# until的示例
a=1
until [ "${a}" -eq 5 ]
do
echo "${a}"
a=$((a+1))
done
4.2 複雜的流程控制語句
4.2.1 函數基礎知識
函數定義:
函數名(){
函數體
}
函數調用
函數名
傳參函數格式
函數名 參數
函數體調用參數
函數名(){
函數體 $n
}
實踐1:
#!/bin/bash
# 函數傳參演示
# 定義傳參數函數
dayin(){
echo "wode mignzi shi $1"
}
# 函數傳參
dayin $1
實踐2:
#!/bin/bash
# 函數的使用場景二
dayin(){
echo "wo de mingzi shi $1"
echo "wo de mingzi shi $2"
echo "wo de mingzi shi $3"
}
dayin 111 df dfs
第5章 代碼發佈
5.1.2 發佈方式
手動方式和腳本方式
5.2 代碼發佈流程
技術點1、文件解壓縮:
壓縮: tar zcvf 壓縮後的文件名 需要壓縮的文件
解壓:tar xf 壓縮後的文件名
命令參數詳解:
z 指定文件格式爲tar.gz
c 壓縮
v 顯示詳細過程
f 指定壓縮文件
x 解壓
查看壓縮文件內容:
zcat 壓縮文件
技術點2、scp傳輸工具
命令格式:
scp 要傳輸的文件 要放置的位置
本地文件推送遠程主機
scp python.tar.gz [email protected]:/root/
將遠程主機的文件拉取到本地
scp [email protected]:/root/python.tar.gz ./
技術點3、文件的備份
文件的備份要有一定的標誌符號,我們就使用目前通用的時間戳的形式來表示
date命令詳解
命令格式:date [option]
常見參數:
%F 顯示當前日期格式,%Y-%m-%d
%T 顯示當前時間格式
演示效果
# date +%F
2017-09-28
# date +%T
03:06:30
# date +%Y%m%d
20170928
# date +%H%M%S
030643
備份命令格式:
方式一:複製備份
cp nihao nihao-$(date +%Y%m%d%H%M%S)
方式二:移動備份(儘量使用)
mv nihao nihao-$(date +%Y%m%d%H%M%S)
練習案例:
1、在主機1上創建一個目錄/data/tar-ceshi/,在目錄裏面創建兩個文件,內容分別如下:
文件名 內容
file1.txt file1
file2.txt file2
2、對目錄tar-ceshi進行壓縮
3、對目錄tar-ceshi進行時間戳備份
4、將壓縮包文件傳輸到遠端主機2
5、在主機2上解壓 壓縮包文件
6、在主機2上修改壓縮包文件內容。然後再次壓縮
7、在主機1上拉取主機2的壓縮包文件
8、使用命令查看壓縮包文件的內容
命令執行效果:
主機1操作命令
1、
mkdir /data/tar-ceshi -p
cd /data
echo 'file1' > tar-ceshi/file1.txt
echo 'file1' > tar-ceshi/file1.txt
2、tar zcvf tar-ceshi.tar.gz tar-ceshi
3、mv tar-ceshi tar-ceshi-$(date +%Y%m%d%H%M%S)
4、scp tar-ceshi.tar.gz [email protected]:/tmp
主機2操作命令
5、
cd /tmp
tar xf tar-ceshi.tar.gz
6、
echo 'file3' >> tar-ceshi/file1.txt
tar zcvf tar-ceshi-1.tar.gz tar-ceshi
主機1操作命令
7、scp [email protected]:/tmp/tar-ceshi-1.tar.gz ./
8、zcat tar-ceshi-1.tar.gz
第六章、 環境部署
技術點一:ssh免密登錄
需要兩臺服務器進行測試,主機1,遠程倉庫2
1、本機生成祕鑰對
主機生成的祕鑰在~/.ssh/
私鑰 id_rsa 鑰匙
公鑰 id_rsa.pub 鎖
ssh-keygen -t rsa
2、對端機器使用公鑰文件認證
複製主機1的公鑰到遠程倉庫2的~/.ssh下的authorized_keys文件內
修改遠程倉庫的文件內
vi /etc/ssh/sshd_config
AuthorizedKeysFile %h/.ssh/authorized_keys
重啓服務:
/etc/init.d/ssh restart
3、驗證
ssh [email protected]