shell脚本之高级变量

目录

一、高级变量赋值

1、高级变量赋值总结表

2、相关操作

二、变量间接引用

1、eval命令


一、高级变量赋值

1、高级变量赋值总结表

变量配置方式str 无配置str 为空字符串str 已配置为非空字符串
var=${str-expr}var=exprvar=var=$str
var=${str:-expr}var=exprvar=exprvar=$str
var=${str+expr}var=var=exprvar=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 输出至 stderrvar=var=$str
var=${str:?expr}expr 输出至 stderrexpr 输出至 stderrvar=$str

2、相关操作

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

#当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} 变量配置方式

#当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} 变量配置方式

#当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} 变量配置方式

#当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} 变量配置方式

#当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} 变量配置方式

#当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} 变量配置方式

#当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} 变量配置方式

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/687918.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【简洁的代码永远不会掩盖设计者的意图】如何写出规范整洁的代码

个人名片: 🦁作者简介:学生 🐯个人主页:妄北y 🐧个人QQ:2061314755 🐻个人邮箱:2061314755qq.com 🦉个人WeChat:Vir2021GKBS 🐼本文由…

@ 代码随想录算法训练营第8周(C语言)|Day50(动态规划)

代码随想录算法训练营第8周(C语言)|Day50(动态规划) Day41、动态规划(包含题目 ● 322. 零钱兑换 ● 279.完全平方数 ) 322. 零钱兑换 题目描述 给定不同面额的硬币 coins 和一个总金额 amount。编写一…

【EI会议征稿通知】第五届信息科学与并行、分布式处理国际学术会议(ISPDS 2024)

第五届信息科学与并行、分布式处理国际学术会议(ISPDS 2024) 2024 5th International Conference on Information Science, Parallel and Distributed Systems 第五届信息科学与并行、分布式处理国际学术会议(ISPDS 2024)定于20…

百度智能云分布式数据库 GaiaDB-X 与龙芯平台完成兼容认证

近日,百度智能云的分布式关系型数据库软件 V3.0 与龙芯中科技术股份有限公司的龙芯 3C5000L/3C5000 处理器平台完成兼容性测试,功能与稳定性良好,获得了龙架构兼容互认证证书。 龙芯系列处理器 通用 CPU 处理器是信息产业的基础部件&#xf…

【算法】基础算法002之滑动窗口(一)

👀樊梓慕:个人主页 🎥个人专栏:《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》《算法》 🌝每一个不曾起舞的日子,都是对生命的辜负 目录 前言 1.长度最小的子数组…

从MobileNetv1到MobileNetv3模型详解

简言 MobileNet系列包括V1、V2和V3,专注于轻量级神经网络。MobileNetV1采用深度可分离卷积,MobileNetV2引入倒残差模块,提高准确性。MobileNetV3引入更多设计元素,如可变形卷积和Squeeze-and-Excitation模块,平衡计算…

MyBatis完成单表的CRUD

提示:如果没有基础的可以看我的博客 > MyBatis概述与MyBatis入门程序 MyBatis完成单表的CRUD 一、准备工作二、Insert(Create)1.使用 map 的方式插入数据(1)编写 SQL 语句(2)编写测试代码&am…

【STM32 CubeMX】SPI HAL库编程

文章目录 前言一、CubeMX配置SPI Flash二、SPI HAL编程2.1 查询方式函数2.2 使用中断方式2.3 DMA方式 总结 前言 STM32 CubeMX 是一款由 STMicroelectronics 提供的图形化配置工具,用于生成 STM32 微控制器的初始化代码和项目框架。在 STM32 开发中,使用…

4核8G云服务器多少钱?价格汇总

4核8G云服务器多少钱一年?阿里云ECS服务器u1价格955.58元一年,腾讯云轻量4核8G12M带宽价格是646元15个月,阿腾云atengyun.com整理4核8G云服务器价格表,包括一年费用和1个月收费明细: 云服务器4核8G配置收费价格 阿里…

C#面:简述装箱和拆箱

在C#中,装箱(boxing)和拆箱(unboxing)是用于在值类型和引用类型之间进行转换的过程。 装箱:(Boxing) 是将值类型转换为引用类型的过程。 将一个值类型赋值给一个对象类型时&#x…

#11vue3中使用el-dialog展示与关闭交由父组件控制的写法

目录 1、法一:通过defineEmits调用父组件方法 1.1、父组件 1.2、子组件(CONTENT) 2、法二:通过difineExpose暴露子组件属性 2.1、父组件 2.2、子组件(Child) 1、法一:通过defineEmits调用…

使用 Coze 搭建 TiDB 助手

导读 本文介绍了使用 Coze 平台搭建 TiDB 文档助手的过程。通过比较不同 AI Bot 平台,突出了 Coze 在插件能力和易用性方面的优势。文章深入讨论了实现原理,包括知识库、function call、embedding 模型等关键概念,最后成功演示了如何在 Coze…

Effective Objective-C 学习(四)

掌握GCD及操作队列的使用时机 在执行后台任务时,GCD 并不一定是最佳方式。还有一种技术叫做 NSOperationQueue,它虽然与 GCD 不同,但是却与之相关,开发者可以把操作以 NSOperation 子类的形式放在队列中,而这些操作也…

mysql like‘%xxx%‘优化

CREATE TABLE test (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(50),INDEX idx_name (name) ) CHARACTER SET utf8; select * from test where name like %abc%; 常规优化 select * from test where name like abc% union select * from test where name like cba%; …

关于Windows中的DirectX的知识,看这篇文章就差不多了

DirectX是Windows中用于多媒体和视频程序的API集合,对游戏玩家尤其重要。DirectX诊断工具显示有关DirectX的丰富信息,还允许你在DirectX系统上执行基本诊断测试。如果你想检查你正在运行的DirectX版本,甚至输出一个充满诊断信息的文件以进行故障排除,下面是如何做到的。 D…

抖音抢到的福袋怎么用?抖音福袋怎么抢几率大?

一、抖音抢到的福袋怎么用 查看福袋内容:当用户在抖音中成功抢到福袋后,首先会在屏幕上看到福袋被成功领取的提示。随后,福袋的内容会显示在用户的抖音钱包或相关页面中。福袋的内容可能包括抖音币、优惠券、实物奖品等。 兑换或使用&#…

react中commit工作流程

整个React工作流程可以分为两大阶段: Render阶段 Schecule Reconcile Commit阶段 注意,Render阶段是在内存中运行的,这意味者可以被打断,而commit阶段一旦开始同步执行直到完成。 Renderer工作的阶段被称为commit阶段。commit阶…

开发知识点-JAVA-springboot+Spring Security/Shiro

Spring Security/Shiro shiroShiro反序列化相关URLDNS链Shiro CC链Shiro CB链Shiro反序列化WAF绕过Java快速开发框架_若依——前后端分离版- 3. 登陆 springsecurity认证 Debug - postman模拟SpringBoot+SpringSecurity+dubbo图书电商后台实战-对象映射-基本属性映射SpringBoot…

一连三部电影撤出春节档,给行业带来什么启示?

继《我们一起摇太阳》后,《红毯先生》于2月16日晚也宣布退出今年春节档。 至此,加上动画电影《黄貔:天降财神猫》,2024年春节档已有三部影片撤档,在春节档历届过往中实属少见。 其中,《红毯先生》、《我们…

【nginx实践连载-2】多应用安装部署

以下是基于端口差异的多应用安装部署,以备参考! #demo1 server {listen 7000; #server_name XXXX.XXX.XXX.XXX; root /var/www/demo1; location /demo1{ index index.html index.htm default.htm default.html; try_files $uri $uri/…