File tree Expand file tree Collapse file tree 1 file changed +91
-0
lines changed
Expand file tree Collapse file tree 1 file changed +91
-0
lines changed Original file line number Diff line number Diff line change 1+ ---
2+ title : Bash脚本入门
3+ pin : false
4+ ---
5+
6+ 最近看完了[ 这本] ( https://github.com/bobbyiliev/introduction-to-bash-scripting ) 介绍Bash脚本的书。
7+
8+ 对Linux感兴趣的你肯定对Bash脚本并不陌生,在折腾Linux和编译奇奇怪怪的开源软件时肯定也执行过Bash脚本,并惊叹于它的神奇。
9+
10+ 下面是我的第一个脚本:
11+
12+ ``` bash
13+ #! /bin/zsh
14+ echo " There was a tenor named Springer,"
15+ echo " Got his testicles caught in a wringer."
16+ echo " He hollered in pain"
17+ echo " As they rolled down the drain,"
18+ echo " (falsetto):\" There goes my carrer as a singer!\" "
19+ ```
20+
21+ 把这个脚本添加到Shell的配置文件里,这样每次打开终端都会打印这个小笑话。很有意思,它已经陪了我一年多了。
22+
23+ 最初我是在纪录片Code Rush中看到的,然后就抄了过来。纪录片B站有转载,[ 精准空降] ( https://www.bilibili.com/video/BV19Y4y1i798?t=1120.7 ) 。
24+
25+ 找来这本书的原因是最近敲` docker ` 命令敲太多遍了,我又不想在自己笔记本上装** 各种** 。所以打算找本Bash脚本的书看看,然后写个脚本把项目的重新部署给自动化一下,免去重复敲相同命令的痛苦。
26+
27+ 其他的书也很多,选这本主要因为它内容较少。少看多写,更多的还是要在实践中学习。
28+
29+ 下面就是我的学习成果:
30+
31+ ``` bash
32+ #! /usr/bin/env bash
33+
34+ # color variables
35+ blue=' \e[34m'
36+ green=' \e[32m'
37+ red=' \e[31m'
38+ clear=' \e[0m'
39+
40+ # color functions
41+ ColorGreen () {
42+ echo -ne $green $1 $clear
43+ }
44+ ColorBlue () {
45+ echo -ne $blue $1 $clear
46+ }
47+ ColorRed () {
48+ echo -ne $red $1 $clear
49+ }
50+
51+ err_check () {
52+ # 检查命令是否成功执行
53+ # 命令执行成功 输出 $1, 否则输出 $2
54+ if [[ $? -eq 0 ]]; then
55+ ColorGreen $1
56+ echo " "
57+ else
58+ ColorRed $2
59+ exit 1
60+ fi
61+ }
62+
63+ project=$1
64+
65+ if [[ -z $project ]]; then
66+ ColorRed " 请将项目名称作为脚本参数"
67+ exit 1
68+ fi
69+
70+ ColorBlue " 当前项目📂:"
71+ echo ${project}
72+
73+ ssh root@${server1} " docker compose -f /root/${project} /docker-compose.yml down -v &>/dev/null"
74+ err_check " 🐳服务已停止" " 服务未停止"
75+
76+ ColorBlue " 开始复制项目文件到:"
77+ echo 🖥️$server1
78+
79+ scp -r . root@${server1} :/root/${project} 1> /dev/null
80+ err_check " 复制结束" " 文件拷贝错误❌"
81+
82+ ColorBlue " 开始重建容器🐳"
83+ echo " "
84+
85+ ssh root@${server1} " docker compose -f /root/${project} /docker-compose.yml build --no-cache && docker compose -f /root/${project} /docker-compose.yml up -d"
86+ err_check " 📂$project 服务已重新部署" " 🐳容器部署错误❌"
87+ ```
88+
89+ 注意执行远程命令时,只有双引号包裹的命令才会把变量替换成实际的值,单引号就直接原样执行了。
90+
91+ 最后附个小抄 < https://devhints.io/bash >
You can’t perform that action at this time.
0 commit comments