day15(git+shell脚本)

一、回顾---文件版本控制git

git本身没有固定的特定端口

通常,Git 协议使用的默认端口取决于所使用的传输协议。例如:

SSH 协议:默认端口是 22 。

HTTP 协议:默认端口是 80 。

HTTPS 协议:默认端口是 443 。

(我们使用的是22端口)

1、安装git软件 yum -y install git

2、创建仓库 mkdir /gitrepo cd /gitrepo

3、初始化文件夹 git init

4、创建文件和目录

touch abc

mkdir abc/efg

5、将文件提交到暂存

git add .

6、将暂存区域的文件提交仓库

git commit -m “说明”

7、推送到远程仓库

git push

8、获取远程仓库的更新

git pull

9、克隆远程仓库

git clone ..........

分支,提高代码灵活性

10、检查分支

git branch (*所在分支为当前分支)

11、创建新分支

git branch 新分支名称

12、跳转分支

git checkout 分支名称

13、在新建分支的同时跳转分支

git checkout -b 新分支名称

14、删除分支 git branch -d|D 分支名 

15、合并分支

跳转到主分支合并分支

git checkout master

git merge b

16、合并冲突 手动解决

二、shell脚本编写注意事项

shell命名: shell脚本名称命名一般为英文、大写、小写、后缀以.sh结尾

不能使用特殊符号、空格

名称要写的一眼可以看出功能,也就是顾名思义

shell脚本首行需要#!/bin/bash开头

shell脚本变量不能以数字、特殊符号开头,可以使用下划线 _,但不能 用破折号——

三、shell脚本学习

1.编写简单的脚本

source helloword.sh运行脚本与直接运行脚本(例如 bash helloword.sh 或 sh helloword.sh )的主要区别在于, source 命令会在当前 shell 进程中执行脚本,脚本中定义的变量和对环境的更改会 直接影响当前的 shell 环境。

四、变量的应用

1.概念

变量用来存放系统或用户需要使用的特定参数或者值,变量的值可以根据用户设定或者系统环境变 化而相应变化,在Shell脚本中使用变量,可使脚本更加灵活,适应性更强。

与变量相对应的是常量,常量例如“Hello World”,是不可改变的

变量可以给个变量名,假如为name,值是可变的

2.变量注意事项

变量命名规则:由大写字母、小写字母、下划线、数字组成,并且首字母不能是数字

在变量命名时:建议也简写出该变量是什么用处

变量值的类型:值的类型会分为整型、浮点型、字符串型、布尔型等, 而且使用变量需要指定类型

Shell 默认的变量类型都是字符串,无需指定类型

3.变量的分类

(1)自定义变量:由用户自己定义、使用和修改

变量名=值中,等于号=之前和之后不能有空格

变量名=值中,值内如果输入数学算式,是没办法算出结果的,只会输出字符串。

(2)环境变量:由系统维护,用于设置工作环境

其中PATH变量用于设置可执行程序的默认搜索路径,可以修改全局变量文件/etc/profile 或修改某 用户家目录下的~/.bash_profile文件永久改变环境变量。

(3)位置变量:通过命令行给脚本程序传递参数(也属于预定义变量)

其中PATH变量用于设置可执行程序的默认搜索路径,可以修改全局变量文件/etc/profile 或修改某 用户家目录下的~/.bash_profile文件永久改变环境变量。

$0:第一个字段表示命令名或脚本名称

$1:脚本要处理的第一个参数

$2:脚本要处理的第二个参数

。。。。。。

Shell脚本最多可以直接处理9个参数

(4)预定义变量:Bash中内置的一类变量,不能直接修改

预定义变量是Bash程序预先定义好的一类特殊变量,用户只能使用预定义变量,而不能创建新的预 定义变量,也不能直接为预定义变量赋值。

$0 :代表脚本本身的文件名。

$# :表示传递给脚本的参数个数。

$* :以一个字符串的形式返回所有的参数。

$@ :以多个字符串的形式返回所有的参数,每个参数占一行。

$$ :当前脚本的进程 ID 。

$? :上一个命令的退出状态。如果上一个命令成功执行,返回 0 ;否则返回非 0 值。

vim 1.sh

4.变量的定义与输出

(1)定义一个新的变量

格式:变量名=变量值

注意:变量名必须以字母或下划线开头,严格区分大小写

(2)变量符号应用

双引号:允许通过$符号引用其他变量值

单引号:禁止引用其他变量值,$视为普通字符

反撇号: 或$(): 命令替换,提取命令的执行结果

(3)输入和输出

输入格式:read [-p "显示的提示信息"] 变量名 ( -s 无回显)

输出格式:echo $变量名

[root@localhost shell]# vim ip.sh # 编写一个查看IP的脚本,内容如下

#!/bin/bash

read -p "请输⼊接⼝名称:" x         # 输入x变量等于什么,脚本内不用写,命令行输入该变量x等于什么 即可,该变量x可在脚本内引用

ifconfig $x | grep -w inet | awk '{print $2}'     # grep -w inet 会在这些信息中 精确匹配包含单词 inet 的行

5.变量的作用范围

默认情况下,新定义的变量只在当前Shell环境中有效,因此称为局部变量。当进入子程序或新的子 shell 时,局部变量将无法再使用。

为了使用户定义的变量在所有子Shell环境中能够继续使用,减少重复设置工作,可以通过内部命令 export将指定的变量导出为“全局变量”。

格式 1:export 变量名

格式 2:export 变量名=值

6.变量的数学运算

(1)数学运算

在 Shell 脚本中,自定义变量的计算可以通过多种方式实现。

一种常见的方式是使用 expr 命令。例如,如果您定义了两个变量 num1 和 num2 :

另一种常用的方式是使用 $(( )) 表达式。比如:

此外,如果您使用的是 bash ,还可以使用 let 命令:

(2)精度运算

精度计算前,先安装bc这个软件才可进行,否则只能进行整数运算

7.语法判断

(1)条件判断$?的应用

Shell的返回值:运行一条命令,都会有一个返回值。0代表执行正常,非0代表命令执行异常。

(2)if条件判断语句

if单分支语句
if 多分支语句

(3)数字判断

1、格式

-eq:equal,等于,一般用于 [ $? -eq 0 ],也就是判断上条命令返回值等于 0,直接数字 -eq 数字 也可以

-ne:not equal,不等于,一般用于 [ $? -ne 0 ],判断上条命令返回值不等于 0

-gt:greater than,大于

-ge:greater or equal,大于或等于

-lt:less than,小于

-le:less or equal,小于或等于

2、测试

(4)字符串判断

1 、格式

[ 字 符 串 1 = = 字 符 串 2 ] 字 符 串 内 容 相 同

[ 字 符 串 1 != 字 符 串 2 ] 字 符 串 内 容 不 同

[ - z 字 符 串 ] 字 符 串 内 容 为 空

[ - n 字 符 串 ] 字 符 串 内 容 不 为 空

2、测试

(5)文件、目录、权限的判断

1.、格式         [ 操作符 文件或目录]

常用的测试操作符:

2.测试

(6)与或判断

判断多个条件

多个条件其中一个成立,或

多个条件都要成立,与

或运算判断:|| 或,两个条件满足其一即可,还有-o

与运算判断:&& 与,两个条件都得满足才行,还有-a

或运算判断

与运算判断

混合判断

(7)、多重判断语法 elif

if 多分支语句结构

测试

(8)、多重判断的 case 语句

(1)case语句概述

case 语句是多分支选择语句

使用case语句改写if多分支可以使脚本结构更加清晰、层次分明。针对变量的不同取值执行不同 的命 令序列,case还支持正则。

(2)case语句结构

(3)测试

[root@localhost test]# sh ./hitkey.sh

8.循环语法

(1)for循环

作用 :读取不同的变量值,以逐个执行同一组命令
结构

取值列表:数字范围、字符串、多个字符串、提前设定好的变量等

for默认以所有的空白字符进行分隔: tab、空格、回车,去循环处理

分隔成几段就循环几次

分隔值循环

在命令结果中循环

(2)while循环

作用

重复测试某个条件,只要条件成立则反复执行

结构

while 和 if区别

while循环也有条件判断,当条件成立的时候,会循环执行。当条件不成立退出

if判断当条件成立时,会执行一次,然后退出。当条件不成立时直接退出

测试

(3)循环的 break 和 continue

break直接结束循环,循环立即退出

continue可以用来跳过一次循环,跳过后循环继续,直到循环停止

(4)九九乘法表

9.sed流式编辑器

概述:

sed 是文本处理工具,读取文本内容,根据指定条件进行处理,可实现增删改查的功能。 sed 依赖于正则表达式。

格式:

sed 选项 “(定位符)指令” 文件名

(定位符)指令---想对文件的哪一行进行操作

选项:

行号定位:

正则定位-->基本正则

扩展正则

Perl兼容的正则

(2)sed修改配置

(3)sed命令引用变量

sed命令使用单引号的情况下,可以使用 '"$var"' 引用(单引号,然后 双引号,变量):

sed -i '2s/node_base/'"$i"'/' /etc/libvirt/qemu/$i.xml

sed命令中使用双引号的情况下,直接 shell command 或者 $(shell command) 引用命令执 行。

sed -i "2s/node_base/$i/" /etc/libvirt/qemu/$i.xml

(4)练习

Git指令的Shell脚本,能够快速便捷地管理Git库,包括添加修改、提交修改、显示库状态、推送到远程库、从远程库更新到本地、版本恢复等操作。 使用方法: 1. 在Linux系统中,将本文件放在Git库目录下,利用Shell运行本文件; 2.在windows系统中,需下载安装与操作系统相对应的Git软件,并将本文件放在Git库目录下,双击即可运行。 运行示例: Please choose the first letter of options. [Add|Commit|Diff|Fetch|Exit|Help|Log|Push|User|Reset|Status]? h A: Add all changes to repository. C: Commit all changes to repository. D: Show differences between current version with HEAD->. E: Exit shell script. F: Fetch origin/master and merge. L: Show latest two-weeks logs of repository. P: Push commissions to origin/master. U: User command mode(Press ‘Enter’ to exit). R: Reset current version according version_id. S: Show status of repository. Please choose the first letter of options. [Add|Commit|Diff|Fetch|Exit|Help|Log|Push|User|Reset|Status]? s On branch master Your branch is up-to-date with 'origin/master'. Changes not staged for commit: (use "git add ..." to update what will be committed) (use "git checkout -- ..." to discard changes in working directory) modified: Git.sh modified: PyNote/PyNote_2.md no changes added to commit (use "git add" and/or "git commit -a") Please choose the first letter of options. [Add|Commit|Diff|Fetch|Exit|Help|Log|Push|User|Reset|Status]? a On branch master Your branch is up-to-date with 'origin/master'. Changes to be committed: (use "git reset HEAD ..." to unstage) modified: Git.sh modified: PyNote/PyNote_2.md
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值