bash中(冒号破折号)的用法 —— 筑梦之路

${PUBLIC_INTERFACE:-eth0}
:- 的用途是什么?

含义:如果 $PUBLIC_INTERFACE 存在且不是 null,则返回其值,否则返回 "eth0"。

  • ${parameter:-word} 使用默认值。如果 parameter 未设置或为 null,则 word 的扩展将被替换。否则,parameter 的值将被替换。

  • ${parameter:=word} 分配默认值。如果 parameter 未设置或为 null,则 word 的扩展被分配给 parameter。然后 parameter 的值被替换。位置参数和特殊参数不能以这种方式分配。

  • ${parameter:?word} 如果为 null 或未设置,则显示错误。如果 parameter 为 null 或未设置,则 word 的扩展(如果 word 不存在,则为此显示一条消息)将写入标准错误,并且 shell(如果它不是交互式的)将退出。否则,parameter 的值将被替换。

  • ${parameter:+word} 使用替代值。如果 parameter 为 null 或未设置,则不替换任何内容,否则 word 的扩展将被替换。

bash 复制代码
# 示例

$ v=abc
$ echo ${v-unset}
abc
$ echo ${v1-unset}
unset

$ var2=
$ : ${var2:=default}
$ echo $var2
default

$ var3=
$ : ${var3:?var is unset or null}
bash: var3: var is unset or null

$ var4=100
$ echo ${var4:+var is set and not null}
var is set and not null

参考资料:

bash(1) - Linux manual page

stackoverflow question 10390406

相关推荐
小O_好好学27 分钟前
Linux帮助命令
linux·运维·服务器
OH五星上将1 小时前
OpenHarmony(鸿蒙南向开发)——标准系统方案之瑞芯微RK3568移植案例(下)
linux·驱动开发·嵌入式硬件·harmonyos·openharmony·鸿蒙开发·系统移植
周湘zx1 小时前
k8s中的微服务
linux·运维·服务器·微服务·云原生·kubernetes
Jack黄从零学c++1 小时前
自制网络连接工具(支持tcpudp,客户端服务端)
linux·c语言·开发语言·网络协议·tcp/ip·udp·信息与通信
‍理我2 小时前
Linux系统编程(基础指令)上
linux·服务器
-杀意感知-2 小时前
Linux 开发工具(vim、gcc/g++、make/Makefile)+【小程序:进度条】-- 详解
linux
周湘zx3 小时前
k8s中的存储
linux·运维·云原生·容器·kubernetes
_平凡之路_3 小时前
解决ubuntu22.04 gnome-terminal 无法启动的问题
linux·运维·python
凯子坚持 c4 小时前
0基础带你入门Linux之使用
linux·运维·服务器
EterNity_TiMe_4 小时前
【Linux基础IO】深入Linux文件描述符与重定向:解锁高效IO操作的秘密
linux·运维·服务器·学习·性能优化·学习方法