Skip to content

Commit

Permalink
bash modify variable
Browse files Browse the repository at this point in the history
Signed-off-by: i-curve <[email protected]>
  • Loading branch information
i-curve committed Dec 24, 2023
1 parent 9875bd2 commit 59a0193
Showing 1 changed file with 36 additions and 7 deletions.
43 changes: 36 additions & 7 deletions BASH/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,15 @@
- [bash 编程](#bash-编程)
- [说明](#说明)
- [I. 变量、数组及其运算](#i-变量-数组及其运算)
- [1. 变量和数组](#1-变量和数组)
- [2. 数学运算](#2-数学运算)
- [3. 变量替换](#3-变量替换)
- [4. 变量获取](#4-变量获取)
- [II. 程序控制语句](#ii-程序控制语句)
- [1. if 条件判断](#1-if-条件判断)
- [2. switch 语句](#2-switch-语句)
- [3. for 循环](#3-for-循环)
- [4. 函数](#4-函数)
- [III. 基本命令](#iii-基本命令)
- [IV. 文本三剑客](#iv-文本三剑客)
- [V. mysql 相关操作](#v-mysql-相关操作)
Expand All @@ -22,7 +30,7 @@ shell 更多的侧重是 shell 命令的使用,语法部分都是比较简单的

## I. 变量、数组及其运算

1. 变量和数组
### 1. 变量和数组

```bash
a=12 # 本地变量
Expand All @@ -35,7 +43,7 @@ shell 默认创建本地变量
​$?: 上一个程序执行返回状态(exit code)
shell 的数组默认下标从 0 开始, awk 从 1 开始

2. 数学运算
### 2. 数学运算

```bash
res=$((3+4))
Expand All @@ -48,7 +56,7 @@ expr 符号两边有空格
只有 bc 可以进行浮点数计算, 其他的计算都会报错
bc 的 scale 代表最终结果的浮点数精度, 默认为 0 表示整数

3. 变量替换
### 3. 变量替换

普通字符串使用
均支持正则表达式
Expand Down Expand Up @@ -86,9 +94,30 @@ ${#arr[@]}
${#arr[@]:1:2}
```

### 4. 变量获取

`${varname-}` 变量如果不存在则为空(后面的值)
`${varname+}` 变量如果存在则为空(后面的值)

1. `${varname:-word}`

语法的含义为如果 varname 存在且不为空, 则返回它的值否则返回 word. 目的是返回一个默认值

2. `${varname:=word}`

语法的含义为如果 varname 存在且不为空, 则返回他得值, 否则把他设置为 word 并返回 word. 目的是设置变量默认值

3. `${varname:+word}`

语法含义为如果 varname 存在且不为空, 则返回 word, 否则返回空. 目的是测试变量是否存在

4. `${varname:?message}`

语法含义如果 varname 存在且不为空, 则返回他得值, 否则打印 varnmae: message, 并终端脚本执行. 目的是防止变量未定义

## II. 程序控制语句

1. if 条件判断
### 1. if 条件判断

```bash
if [[ "$a" -eq "12" ]];then
Expand All @@ -106,7 +135,7 @@ test 条件: 指的是命令的输出值, 即 echo 的值

$(command)、\`expr command\`: 获取到的均为程序的输出值

2. switch 语句
### 2. switch 语句

```bash
case "$a" in
Expand All @@ -124,7 +153,7 @@ esac

其中每个条件后面的;;代表 break 语句,必须有, \*代表 default 匹配所有

3. for 循环
### 3. for 循环

```bash
# 1. 普通遍历
Expand All @@ -143,7 +172,7 @@ for word in $(cat file);do
done
```

4. 函数
### 4. 函数

```bash
function func_name() {
Expand Down

0 comments on commit 59a0193

Please sign in to comment.