From 59a0193aff39747f3458fb504ff31fc2b88cd153 Mon Sep 17 00:00:00 2001 From: i-curve <2517094646@qq.com> Date: Sun, 24 Dec 2023 17:07:27 +0800 Subject: [PATCH] bash modify variable Signed-off-by: i-curve <2517094646@qq.com> --- BASH/README.md | 43 ++++++++++++++++++++++++++++++++++++------- 1 file changed, 36 insertions(+), 7 deletions(-) diff --git a/BASH/README.md b/BASH/README.md index 3afc704..7cce0fd 100644 --- a/BASH/README.md +++ b/BASH/README.md @@ -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-相关操作) @@ -22,7 +30,7 @@ shell 更多的侧重是 shell 命令的使用,语法部分都是比较简单的 ## I. 变量、数组及其运算 -1. 变量和数组 +### 1. 变量和数组 ```bash a=12 # 本地变量 @@ -35,7 +43,7 @@ shell 默认创建本地变量 ​$?: 上一个程序执行返回状态(exit code) shell 的数组默认下标从 0 开始, awk 从 1 开始 -2. 数学运算 +### 2. 数学运算 ```bash res=$((3+4)) @@ -48,7 +56,7 @@ expr 符号两边有空格 只有 bc 可以进行浮点数计算, 其他的计算都会报错 bc 的 scale 代表最终结果的浮点数精度, 默认为 0 表示整数 -3. 变量替换 +### 3. 变量替换 普通字符串使用 均支持正则表达式 @@ -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 @@ -106,7 +135,7 @@ test 条件: 指的是命令的输出值, 即 echo 的值 $(command)、\`expr command\`: 获取到的均为程序的输出值 -2. switch 语句 +### 2. switch 语句 ```bash case "$a" in @@ -124,7 +153,7 @@ esac 其中每个条件后面的;;代表 break 语句,必须有, \*代表 default 匹配所有 -3. for 循环 +### 3. for 循环 ```bash # 1. 普通遍历 @@ -143,7 +172,7 @@ for word in $(cat file);do done ``` -4. 函数 +### 4. 函数 ```bash function func_name() {