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

相关推荐
niucloud-admin3 分钟前
JAVA V6 多商户商城 开发文档——插件目录结构
java·开发语言
滕州市燕猫虎计算机科技工作室个体工商户13 分钟前
Java锁
java·开发语言
多加点辣也没关系41 分钟前
JavaScript|第31章:表单与控件
开发语言·javascript·ecmascript
菜鸟~noob2331 小时前
【电子战】 第09篇:阵列信号处理——波束形成、MVDR、MUSIC【含matlab代码】
开发语言·matlab·信号处理
ocean21031 小时前
2025-2026年Python面试高频知识点洞察
开发语言·python·面试·python八股文
零依赖极客1 小时前
Day 6·1 ARMv8.2 dotprod——vdotq_s32 一条指令做 4 个点积
c语言·开发语言·人工智能·矩阵·arm·vllm
新时代牛马3 小时前
cyclictest 毛刺从哪来?从ftrace、latencytop、perf到IRQ/调度延迟定位
android·开发语言·python·kotlin
三8443 小时前
Java 模板注入(FreeMarker) · 02 · 模板引擎与 FreeMarker 语法
java·开发语言·web安全·freemarker
IvanCodes4 小时前
Python 基础语法(七):推导式与常见遍历写法
开发语言·python
暮雨哀尘4 小时前
Java 基础练习(一):创建类并调用对象
java·开发语言