shell脚本之高级变量

目录

一、高级变量赋值

1、高级变量赋值总结表

2、相关操作

二、变量间接引用

1、eval命令


一、高级变量赋值

1、高级变量赋值总结表

变量配置方式 str 无配置 str 为空字符串 str 已配置为非空字符串
var=${str-expr} var=expr var= var=$str
var=${str:-expr} var=expr var=expr var=$str
var=${str+expr} var= var=expr var=expr
var=${str:+expr} var= var= var=expr
var=${str=expr} str=expr var=expr str 不变 var= str 不变 var=$str
var=${str:=expr} str=expr var=expr str=expr var=expr str 不变 var=$str
var=${str?expr} expr 输出至 stderr var= var=$str
var=${str:?expr} expr 输出至 stderr expr 输出至 stderr var=$str

2、相关操作

(1)var=${str-hello} 变量配置方式

bash 复制代码
#当str无配置时
[root@localhost ~]#unset str;var=${str-hello}
#当str为空字符串时
[root@localhost ~]#str=" ";var=${str-hello}
#当str为非空字符串时
[root@localhost ~]#str="1";var=${str-hello}

(2)var=${str:-hello} 变量配置方式

bash 复制代码
#当str无配置时
[root@localhost ~]#unset str;var=${str:-hello}
#当str为空字符串时
[root@localhost ~]#str=" ";var=${str:-hello}
#当str为非空字符串时
[root@localhost ~]#str="1";var=${str:-hello}

(3)var=${str+hello} 变量配置方式

bash 复制代码
#当str无配置时
[root@localhost ~]#unset str;var=${str+hello}
#当str为空字符串时
[root@localhost ~]#str=" ";var=${str+hello}
#当str为非空字符串时
[root@localhost ~]#str="1";var=${str+hello}

(4)var=${str:+hello} 变量配置方式

bash 复制代码
#当str无配置时
[root@localhost ~]#unset str;var=${str:+hello}
#当str为空字符串时
[root@localhost ~]#str=" ";var=${str:+hello}
#当str为非空字符串时
[root@localhost ~]#str="1";var=${str:+hello}

(5)var=${str=hello} 变量配置方式

bash 复制代码
#当str无配置时
[root@localhost ~]#unset str;var=${str=hello}
#当str为空字符串时
[root@localhost ~]#str=" ";var=${str=hello}
#当str为非空字符串时
[root@localhost ~]#str="1";var=${str=hello}

(6)var=${str:=hello} 变量配置方式

bash 复制代码
#当str无配置时
[root@localhost ~]#unset str;var=${str:=hello}
#当str为空字符串时
[root@localhost ~]#str=" ";var=${str:=hello}
#当str为非空字符串时
[root@localhost ~]#str="1";var=${str:=hello}

(7)var=${str?hello} 变量配置方式

bash 复制代码
#当str无配置时
[root@localhost ~]#unset str;var=${str?hello}
#当str为空字符串时
[root@localhost ~]#str=" ";var=${str?hello}
#当str为非空字符串时
[root@localhost ~]#str="1";var=${str?hello}

(8)var=${str:?hello} 变量配置方式

bash 复制代码
#当str无配置时
[root@localhost ~]#unset str;var=${str:?hello}
#当str为空字符串时
[root@localhost ~]#str=" ";var=${str:?hello}
#当str为非空字符串时
[root@localhost ~]#str="1";var=${str:?hello}

二、变量间接引用

1、eval命令

eval命令用于执行参数中包含的命令,并且可以替换其中的变量。当eval命令被调用时,它会将参数作为一个命令来执行,并且在执行前会对参数进行两次扩展(expansion)。这意味着它会先进行变量扩展,然后进行命令扩展

相关推荐
林森lsjs1 小时前
队列 FIFO 原理 & 手撕两种队列实现(链表 + 循环数组)—数据结构陆
java·开发语言·数据结构·队列
何以解忧,唯有..1 小时前
Python time 模块详解:时间处理与日期操作指南
开发语言·python
caimouse1 小时前
ReactOS 窗口系统分析(20):光标与图标 — cursoricon.c
c语言·开发语言
Buke..2 小时前
【APP 逆向】哔哩哔哩 sign 参数逆向(下):OLLVM 混淆还原 sign 算法
java·javascript·爬虫·python·算法
longxiaozhang62 小时前
C#运算符重载:让对象也能使用“加减乘除”
开发语言·c#
mounter6253 小时前
GCCRS 突破与 Rust 入核:Linux 工具链的重大变革
linux·开发语言·rust·linux kernel·kernel
Buke..3 小时前
【APP 逆向】哔哩哔哩 sign 参数逆向(上):Frida 反调试绕过与 unidbg 调用
java·开发语言·爬虫·python·安卓
abcefg_h3 小时前
MCP 实战指南:如何在项目中使用 Model Context Protocol 及其通信原理
开发语言·后端·golang·mcp
梦痕长情3 小时前
记一次关于AI在数仓中的应用
开发语言·人工智能·python·ai