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)。这意味着它会先进行变量扩展,然后进行命令扩展

相关推荐
JieE2123 小时前
LeetCode 101. 对称二叉树|JS 递归 + 迭代双解法,彻底搞懂镜像判断
javascript·算法
冬奇Lab6 小时前
AI Workflow 定义的四次演进:从 Markdown 到 JS 脚本,再到分布式多 Agent
javascript·人工智能·agent
一颗烂土豆11 小时前
Meshopt 压缩深度解析,为什么它比 Draco 更快
前端·javascript·webgl
kyriewen14 小时前
同事每天催我 Code Review,我写了个脚本让 AI 替我 review PR——现在他反过来催 AI 了
前端·javascript·ai编程
weedsfly16 小时前
迭代器、生成器与异步迭代——让数据“按需流动”的艺术
前端·javascript
假如让我当三天老蒯16 小时前
前端跨域解决方案(学习用)
前端·javascript·面试
铁皮饭盒18 小时前
Bun 哪比 Node.js 快?
javascript·后端
JieE2121 天前
LeetCode 56. 合并区间|超清晰 JS 图解思路,面试高频区间题
javascript·算法·面试
candyTong1 天前
RTK 技术原理:一次典型会话里,80% 上下文是怎么省下来的
javascript·后端·架构
_柳青杨1 天前
深入理解 JavaScript 事件循环
前端·javascript