基于windows和git学习shell(与linux下一致)

目录

1 运行shell脚本的三种方式

2 变量声明

2.1 局部变量

2.2 全局变量

2.3 只读变量

2.4 特殊变量

2.4.1 $n

2.4.2 $#

2.4.3 $*、$@

2.4.4 $?

3运算符

3.1 基本语法

4条件判断

4.1 基本语法

4.2 常用的判断条件

4.2.1 字符串等非数值比较

4.2.2 两个整数之间的比较

4.2.3 按照文件权限进行判断

4.2.4 按照文件类型进行判断

4.2.5 多条件判断

5 流程控制

5.1 if判断

5.1.1 单分支

5.1.2 多分支

5.2 case语句

5.2.1 基本语法

5.3 for循环

5.3.1 基本语法1

5.3.2 基本语法2

5.4 while循环

5.4.1 基本语法

6 read读取控制台输入

6.1 基本语法

7 函数

7.1 系统函数

7.1.1 basename

7.1.2 dirname

7.2 自定义函数

8 正则表达式入门

8.1 常规匹配

8.2 常用特殊字符

9文本处理工具

9.1 cut

9.2 awk

9.2.1 基本用法

9.2.2 awk内置变量

last 综合案例

1 归档文件


1 运行shell脚本的三种方式

(1)./test.sh

(2)sh test.sh

(3)/bin/sh test.sh

(4)source test.sh 或者 直接一个 . test.sh

正常来说,使用第一种就可以了。

2 变量声明

2.1 局部变量

name=haha 这种形式,中间不要有空格。

多个字符可以使用这样的形式 name="haha good" 或者 name='haha good'

2.2 全局变量

先声明成局部变量,然后使用export关键字进行导出成全局变量

my_var=hello
export my_var

在外层定义的全局变量在内层更改的话不会影响外层。(就是子shell里面做的更改不会影响父shell)。

变量默认都是字符串类型的,要是想要运算的话,声明的时候可以

使用 a=$((1+5)),这种$加上双括号的形式

使用a=$[1+5],这种$加上一层中括号的形式

可以使用 unset my_var 撤销变量,但是不能unset只读变量

2.3 只读变量

readonly b=5

变量间的复制,并不是地址复制,单纯的值复制

 

2.4 特殊变量

2.4.1 $n

通过 $n的形式,获取执行.sh文件的时候,后面跟的第n个参数。n超过9之后用{}括起来,就像${10}。$0代表当前脚本

 

 

2.4.2 $#

$# 用于获取输入参数的个数,常用于循环,判断参数个数是否正确以及加强脚本的健壮性

2.4.3 $*、$@

这两个都是代表命令行的所有参数,只不过$*把所有参数看成一个整体,$@把每一个参数区分对待,就可以使用循环这种操作。

2.4.4 $?

功能描述:最后一次执行的命令(或者说就是紧挨着的上一次命令)的返回状态。如果这个变量值为0,证明上一个命令正确的执行;如果这个变量的值为非0(具体是哪个数,由命令自己来决定),则证明上一个命令执行的不正确了。

3运算符

使用 expr (未简化前)

expr 1 + 2
expr 3 - 2
expr 5 \* 2

3.1 基本语法

$(()) 或 $[] 就是上文提到的

$[5*10]
a=$[6+8]
a=$[4+5]
#也可以使用命令替换
a=$(expr 2 + 4)
a=`expr 2 + 4`

4条件判断

4.1 基本语法

  1. test condition condition中的判断符号前后要有空格,否则会将里面的表达式作为一个整体,非空就直接为真了

  2. [ condition ] (注意condition前后要有空格,同时判断符号也要注意空格问题)

注意:条件非空即为true,[hello]返回true,[]返回false

举例:可以看到使用 $?得到的值是0,表示上一个命令正确。

 

否则的话返回的就是非0值,表示上一次命令不正确,也就是判断失败了。

 

也可以使用第二种方法,这里注意就是,[ ]符号里面的空格问题。

4.2 常用的判断条件

4.2.1 字符串等非数值比较

= 等于判断

!= 不等于判断

4.2.2 两个整数之间的比较

-eq 等于(equal) -ne 不等于(not equal)

-lt 小于(less than) -le 小于等于(less equal)

-gt 大于(greater than) -ge 大于等于(greater equal)

 

 

4.2.3 按照文件权限进行判断

-r 有读的权限 (read)

-w 有写的权限 (write)

-x 有执行的权限 (execute)

 

4.2.4 按照文件类型进行判断

-e 文件存在(existence)

-f 文件存在并且是一个常规文件(file)

-d 文件存在并且是一个目录 (directory)

4.2.5 多条件判断

&&表示前一条命令执行成功时,才执行后一条命令。

||表示上一条命令执行失败后,才执行下一条命令

 

上面的语句功能类似于 if ... else ...

5 流程控制

5.1 if判断

基本语法:

5

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值