Linux变量替换技术
1.1.1 ${value:-word}
如果变量value没有定义,则返回word,如果已经赋值则返回value变量的值
result=${jimyy:-UNSET}
echo $result
由于jimyy没有定义,因此返回UNSET

这种变量功能判断变量在没有定义时,确保变量始终有一个返回值。
1.1.2 ${value:=word}
当value没有定义时,则把word赋给value,然后通过${value:=word} 值把vaule值打印出来。
result=${jimyy:=UNSET}
echo $result
echo $jimyy
结果两个变量的值都是UNSET

这个变量功能是在变量没有定义时,给变量赋一个值,并且返回。
1.1.3 ${value:? "not defined"} 当value没有定义时,返回
bash: vaule : not defined
用于捕捉变量没有定义而导致的错误

1.1.4 ${value:+word} 当变量存在且非null时,返回word,否则返回null
用于测试变量是否存在

1.1.5 ${value-word} 如果value不存在,则用word替代。

变量替换功能在某些场景下有显著的功能。
当对变量进行操作时,最好先判断变量是否非空,比如对目录类型的变量进行rm -rf操作,必须要对这个变量进行判断,
因为如果变量为空,或者未赋值,则可能会从根目录或/root目录开始删除,影响是特别大,因此要慎重,因此在这种场景下可以使用变量替换功能,防止意外删除操作。
例如:
path1=/opt/server/backup/
find ${path1:=/tmp/} -name "*.tar.gz" -type f|xargs rm -f
Linux变量替换技术的更多相关文章
- sed 变量替换和Linux的特殊符号大全
1 sed支持两种方式的变量替换,建议使用下面的第二种,比较简单 这样就可以给变量a赋值很多特殊字符了,比如 赋值a='!@#¥%……' sed -n 's/echo/'"$a"' ...
- 【Linux】linux bash shell之变量替换::=句法、=句法、:-句法、-句法、=?句法、?句法、:+句法、+句法
linux bash shell之变量替换::=句法.=句法.:-句法.-句法.=?句法.?句法.:+句法.+句法 linux bash shell之变量替换::=句法.=句法.:-句法.-句法. ...
- Linux cat 多行写入文件防止变量替换
Linux cat 多行写入文件防止变量替换 问题描述 对多个变量及多行输出到文件,存在变量自动替换,当使用cat<<EOF不想对内容进行变量替换.命令替换.参数展开等 问题解决 转义特 ...
- Linux Shell编程(6)——变量替换
变量的名字是它的值保存的地方.引用它的值称为变量替换.$让我们仔细地区别变量和变量的值.如果variable1是一个变量的名字,那么$variable1就是引用这个变量的值――即这个变量它包含的数据. ...
- linux脚本编程技术
linux脚本编程技术 一.什么是脚本 脚本是一个包含一系列命令序列的可执行(777)文本文件.当运行这个脚本文件时,文件中包含的命令序列将得到自动执行. 二.脚本编程 #!/bin/sh 首行固定格 ...
- 使用变量替换批量部署GoldenGate
GoldenGate运行时允许在参数文件中动态指定一个值,即在参数文件中使用一个变量,而不是一个静态的值,当启动OGG进程时,根据环境动态加载此变量的值,达到在不同环境中,通过变量定义,实现多个环境的 ...
- linux变量心得
前一段时间学习了一下linux的变量,现在总结有3点需要特别注意: linux变量和C/C++变量的区别 linux变量的引用 linux变量特有的命令替换 先说第一点,linux变量更像是宏定义,只 ...
- Linux kprobe调试技术使用
kprobe调试技术是为了便于跟踪内核函数执行状态所设计的一种轻量级内核调试技术. 利用kprobe技术,可以在内核绝大多数函数中动态插入探测点,收集调试状态所需信息而基本不影响原有执行流程. kpr ...
- Shell 变量替换及测试
声明:$ 后面跟linux可执行命令 一.变量替换 语法 说明 ${变量名#匹配规则} 从变量的开头进行规则匹配,将符合最 ...
随机推荐
- 【win10主机】访问virtualbox上【32位winXP系统虚拟机】上启动的项目
win10上创建虚拟网卡: 1,右键此电脑点击管理——设备管理器——网络适配器: 2,点左上角菜单栏的 操作——添加过时硬件: 3,点下一步 4,点安装我手动从列表选择的硬件(高级)M 5,点网络适配 ...
- 激活Cisco路由器和交换机的right-to-use
一.确认当前正在使用license版本 show license #路由器2911测试可行 show license summary #交换机C4503测试可行 show version # ...
- python + selenium webdriver 通过python来模拟鼠标、键盘操作,来解决SWFFileUpload调用系统底层弹出框无法定位问题
Webdriver是基于浏览器操作的,当页面上传文件使用的是flash的控件SWFFileUpload调用的时候,调用的是系统底层的文件选择弹出框 这种情况,Webdriver暂时是不支持除页面外的其 ...
- 使用.Net Core CLI命令dotnet new创建自定义模板
文章起源来自一篇博客:使用 .NET CORE 创建 项目模板,模板项目,Template - DeepThought - 博客园 之前使用Abp的时候就很认同Abp创建模板项目的方式.想不到.Net ...
- C#_细说Cookie_Json Helper_Cookies封装
阅读目录 开始 Cookie 概述 Cookie的写.读过程 使用Cookie保存复杂对象 Js中读写Cookie Cookie在Session中的应用 Cookie在身份验证中的应用 Cookie的 ...
- shiro@RequiresPermission的设置
public class MyShiroRealm extends AuthorizingRealm { //slf4j记录日志,可以不使用 private Logger logger = Logge ...
- RestTemplate最详解
目录 1. RestTemplate简单使用 2. 一些其他设置 3. 简单总结 在项目中,当我们需要远程调用一个HTTP接口时,我们经常会用到RestTemplate这个类.这个类是Spring框架 ...
- layui下拉框不显示的问题
1.先检查有没有引入layui.js 2.然后看有没有被<form class="layui-form"></form>包住, 3.查看是否有以下代码 &l ...
- Javaweb之文件的上传与下载
Javaweb之文件的上传与下载 一.基于表单的文件上传 如果在表单中使用表单元素 <input type=“file” />,浏览器在解析表单时,会自动生成一个输入框和一个按钮,输入框可 ...
- ESXi安装报错,No network adapters were detected...
转载请在文章开头附上原文链接地址:https://www.cnblogs.com/Sunzz/p/11438066.html 报错内容 No network adapters No Network a ...