shell之变量默认值
{var:-default_value}
当var 不存在,或者值为空时,返回default_value
name不存在,返回了一个默认值,但是name并没有改变, 后续不可访问
$ set -u # 打开访问不存在的对象将报错, set +u关闭
$ unset name # 删除name
$ echo $name
-bash: name: unbound variable
$ echo ${name:-zhangsan}
zhangsan
$ echo $name
-bash: name: unbound variable
$
name为空值,返回了一个默认值,但是name并没有改变, 后续不可访问
$ name="" # 创建name,并设置空值
$ echo $name
$ echo ${name:-lisi}
lisi
$ echo $name
$
name有值,什么都没变
$ name="wangwu"
$ echo ${name:-libai}
wangwu
$ echo $name
wangwu
$
{var:=default_value}
当var 不存在,或者值为空时,返回defaultvalue, 并且对var赋值default_value
后续可以对var进行访问,*不能对位置参数进行使用(比如$1,$2…, $等)
name不存在, 创建name,并且赋值default_value, 后续可访问
$ set -u
$ unset name # 删除name
$ echo $name
-bash: name: unbound variable
$ echo ${name:=zhangsan}
zhangsan
$ echo $name
zhangsan # 已经创建,并且赋值,后续可以访问
name存在但是值为空,赋值default_value, 后续可访问
$ name=""
$ echo $name
$ echo ${name:=lisi}
lisi
$ echo $name
lisi
name存在且有值,不替换
$ echo $name
lisi
$ echo ${name:=wangwu}
lisi
$ echo $name
lisi
对位置参数进行操作,将报错
#!/usr/bin/env bash
# 文件名: default1.sh
echo ${1:=hello}
$ bash default1.sh
$1: cannot assign in this way
{var=default_value}
当var 不存在,则返回default_value,并且对var赋值default_value
当空值也是合法的时候,则使用这个。
name不存在时,创建并赋值,后续可访问
$ set -u
$ unset name
$ echo $name
-bash: name: unbound variable
$ echo ${name=xiaowang}
xiaowang
$ echo $name
xiaowang
name存在,且不为空,不替换
$ echo $name
xiaowang
$ echo ${name=lisi}
xiaowang
$ echo $name
xiaowang
当name存在,值为空时,不替换
$ name=""
$ echo $name
$ echo ${name=wangsi}
$ echo name
{var:+value}
当var 不存在,或者值为空时,不返回信息,只有var有值时,才返回value
可用于拼接字符串
name不存在,不返回值
$ set -u
$ unset name
$ echo $name
-bash: name: unbound variable
$ echo ${name:+zhangsan}
$ echo $name
-bash: name: unbound variable
name存在,但是值为空,不返回值
$ name=""
$ echo $name
$ echo ${name:+zhangsan}
$ echo $name
name存在且有值,返回, 不改变name
$ name="lisi"
$ echo $name
lisi
$ echo ${name:+,zhangsan}
,zhangsan
$ echo $name
lisi
比如将文件内容合并为一行,并且用逗号分隔
$ cat 1.txt
$ while read LINE;do content=${content}${content:+,}$LINE;done<1.txt
$ echo $content
1,2,3,4,5
${pos:?errmsg}
对位置参数的判断,当位置参数不存在或者为空时,输出错误信息并退出
#!/usr/bin/env bash
# 文件名: default2.sh
param1=${1:?"参数错误,必须有一个参数,并且不为空"}
echo 第一个参数是:$param1
$ chmod +x default2.sh
$ ./default2.sh
./default2.sh: line 4: 1: 参数错误,必须有一个参数,并且不为空
$ ./default2.sh ""
/default2.sh: line 4: 1: 参数错误,必须有一个参数,并且不为空
$ ./default2.sh "hello world"
第一个参数是:hello world
shell之变量默认值的更多相关文章
- [原创] Shell 参数传递 与 默认值
目录 简介 基本传参 $* 与 $@ 区别 默认参数(变量默认值) if 繁琐方式 - 变量为null = 变量为null时, 同时改变变量值 :- 变量为null 或 空字符串 := 变量为null ...
- shell变量默认值
${var:-string},${var:+string},${var:=string},${var:?string} 1. ${var:-string}和${var:=string}:若变量var为 ...
- 转载:as3.0下对象类型返回值与变量默认值的详细说明
转自:http://www.cuplayer.com/player/PlayerCodeAs/2012/0905367.html Null.NaN.undefined 及各自应用对象:变量的默认值: ...
- Java成员变量默认值
Java中明确规定:1.如果是引用型的,比如:String,还有类对象,他们的默认值都是:null:2.而如果是值类型:double,int,long,float,char等等,他们都是:0:还有一个 ...
- Java中初始变量默认值
Java语言中有8种基本数据类型,基本情况汇总如下: 序号 数据类型 大小/位 封装类 默认值 可表示数据范围 1 byte(位) 8 Byte 0 -128~127 2 short(短整数) 16 ...
- shell使用变量的值,获取一个新的变量名的值
[root@localhost ~]# cat s2.sh #!/bin/bash color_name="red" red=31 color=`eval echo '$'&quo ...
- Java类成员变量的默认值
1.布尔型(boolean)变量默认值为false,byte.short.int.long为0,字符型为'\u0000'(空字符),浮点型(float double)为0.0,引用类型(String) ...
- 【Linux】linux bash shell之变量替换::=句法、=句法、:-句法、-句法、=?句法、?句法、:+句法、+句法
linux bash shell之变量替换::=句法.=句法.:-句法.-句法.=?句法.?句法.:+句法.+句法 linux bash shell之变量替换::=句法.=句法.:-句法.-句法. ...
- Linux Shell 高级变量及字符串
高级变量包含三个部分1.变量扩展2.命令替换3.算术扩展在Bash Shell中,$算符会触发到上述三种扩展,基本形式如下: 基本型 扩展种类 例子 ...
- Android的LinearLayout中orientation默认值为什么是HORIZONTAL
在一个偶然(闲着无聊)的过程中,突然非常好奇为什么LinearLayout在不指定排列方向为垂直(VERTICAL)时就得是水平方向(HORIZONTAL)排列的.产生这个疑问的时候脑子里蹦出来的第一 ...
随机推荐
- Pytorch 基于加权平滑过渡的无缝拼接
基于加权平滑过渡的无缝拼接 背景 在做照片数字人视频生成的时候,为了达到快速响应实时播放的需求,即视频的生成速度 必须小于 音频的播放速度. 因此,我们截取了一部分较小的可动区域进行推理生成,然后把生 ...
- ADO.NET 和 ORM的区别
ADO: 1 大量的Sql语句-业务不同,Sql语句不同 2 需要根据不同的场景编写不同Sql语句-灵活去编写Sql语句-提前优化Sql 语句-提供高性能的Sql语句 3 不适合快速开发 4 可编程性 ...
- Oracle ASM 常用巡检脚本
1.查看磁盘组 sqlplus "/ as sysasm" set line 200 set pagesize 200 select group_number,name,state ...
- 基于SpringMVC实现多文件上传
1.jar包 (1)方式1:文件上传的jar包,这里手动添加jar包(/web/WEB-INF/lib) (2)方式2:Maven的pom.xml添加依赖 (3)省略其他jar包和配置 2.XML文件 ...
- Redhat 7.6安装11G RAC GI时遇到此类报错
环境:Redhat Linux 7.6 + Oracle 11.2.0.4 RAC 现象:图像化安装过程中,按照提示执行root.sh脚本,报错中断. 1. 具体现象 2. 定位问题 3. 解决问题 ...
- 五分钟掌握Python中配置文件解析器configparser的使用
--- 好的方法很多,我们先掌握一种 --- [背景] 这里描述的配置文件为自动化用例中使用到的信息,非pytest自动化框架中例如pytest.ini, conftest.py等具有特殊意义的配 ...
- Next.js 实战开发入门 1 开发环境部署 - 曲速引擎 Warp Drive
开发目标 我们将构建一个简化版本的财务仪表板,其内容包括:公共主页.登录页面.受身份验证保护的仪表板页面.用户可以添加.编辑和删除发票 开发环境配置 开发客户端 Windows 10 (不限系统,兼容 ...
- 斜率优化初探:以 [HNOI2008]玩具装箱 为例
题目传送门 记 \(f[i]\) 表示装好前 \(i\) 个的最小花费.容易写出转移: \[f[i] = \min_{j \lt i} \ [f[j]+(s[i] - s[j] - 1 - L) ^ ...
- AI翻唱神器,一键用你喜欢的歌手翻唱他人的曲目(附下载链接)
最近,"AI孙燕姿"翻唱众多明星的歌曲在各大网络平台上走红,其作品不仅累积上千万的播放量,在科技圈和音乐圈也都引发了热议,歌手孙燕姿在社交平台发文回应称:人类无法超越AI技术已指日 ...
- 通向架构师的道路(第二十四天)之Oracle性能调优-朝拜先知之旅
前言 这次,我们将在Linux下来动手完成Oracle数据库的安装与使用. Oracle本身是可以免费下载的包括 它的企业版以及被它收购的Weblogic和Sun中的几乎任何东西你都可以拿来下载和使用 ...