第四章、流程控制
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 root@192.168.8.15:/root/
将远程主机的文件拉取到本地
scp root@192.168.8.15:/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 root@192.168.8.15:/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 root@192.168.8.15:/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 root@192.168.8.15