Shell 笔记

Bash

Linux 的 Shell 种类众多,这里用的Shell环境是bash(Bourne Again Shell(/bin/bash))
脚本第一行一般是这样:

#!/bin/bash

同时,Bash 也是大多数Linux 系统默认的 Shell。
在一般情况下,人们并不区分 Bourne Shell 和 Bourne Again Shell,所以,像 #!/bin/sh,它同样也可以改为 #!/bin/bash。
#! 告诉系统其后路径所指定的程序即是解释此脚本文件的 Shell 程序

一、变量定义

key=value的形式,例如

version="2.0.2"
Green_font_prefix="\033[32m" && Red_font_prefix="\033[31m" && Green_background_prefix="\033[42;37m" && Red_background_prefix="\033[41;37m" && Font_color_suffix="\033[0m"
gitFlag=0      # 重试标识,flag=0 表示任务正常,flag=1 表示需要进行重试

字色 背景 颜色
30 40 黑色
31 41 紅色
32 42 綠色
33 43 黃色
34 44 藍色
35 45 紫紅色
36 46 青藍色
37 47 白色

二、变量引用

Info="${Green_font_prefix}[信息]${Font_color_suffix}"
Error="${Red_font_prefix}[错误]${Font_color_suffix}"
Tip="${Green_font_prefix}[注意]${Font_color_suffix}"
echo -e "${Info} 请输入${Green_background_prefix} ${Red_font_prefix}gitlab账号/密码 ${Font_color_suffix}来拉取最新代码。"

三、while/if 以及读取操作结果

while [ ${gitFlag} -eq 0 ]
do
	result=`git pull` #读取操作结果
	if [  "${result:-0}" == 0  ]; #判断操作结果,执行失败则返回0
	then
		echo -e "${Error}${Red_font_prefix} 密码错误,请重试${Font_color_suffix}"
		gitFlag=0
	else
		gitFlag=1
		break;
	fi
done

四、退出

shell一般是需要手动退出的,所以在不需要再执行操作的时候执行↓

	exit 1

五、expect

这是expect使用的例子,多用于自动填写密码等,比如输入root密码

set timeout 10
expect -c "
  spawn su - root
  expect \"密码:\"
  send \"123456\n\"
  interact"

或者scp命令

target="x.x.x.x(这是目标ip)"
floder="/usr/local/nginx/html"
password="这是密码"
echo -e "${Info} 正在${Green_background_prefix} ${Red_font_prefix}部署 ${Font_color_suffix}"
expect <<EOF
	set timeout 10
	spawn scp -r  ../files root@${target}:${floder}
	expect {
	"yes/no"	{ send "yes\n";exp_continue }
	"password" { send "${password}\n" }
	}
	expect "password" { send "${password}\n" }
EOF
echo -e "${Info} ${Green_background_prefix}${Red_font_prefix}部署完成${Font_color_suffix}"

shell执行速度快,必要时需延迟处理 set timeout

六、其他事项

因为执行bash是在子shell中执行,所以cd命令不会对父shell生效
需要生效则使用:

. ./example.sh

或者

source ./example.sh

————————————————————————————

👉推荐!!!【腾讯云】爆款2核4G云服务器首年74元/年
👉推荐!!!【腾讯云】1核2G5M轻量应用服务器50元/年
【腾讯云】云数据库低至9.9/年!MySQL7.4元/月
【阿里云】ECS云服务器特惠
【阿里云】服务器首购优惠
如果文章对您有帮助,扫个红包码呗

红包码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值