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

相关推荐
AnalogElectronic2 小时前
linux 测试网络和端口是否连通的命令详解
linux·网络·php
Edward111111112 小时前
4月28日防火墙问题
linux·运维·服务器
子琦啊3 小时前
【算法复习】字符串 | 两个底层直觉,吃透高频题
linux·运维·算法
AOwhisky4 小时前
Kubernetes 学习笔记:集群管理、命名空间与 Pod 基础
linux·运维·笔记·学习·云原生·kubernetes
小龙在慢慢变强..5 小时前
目录结构(FHS 标准)
linux·运维·服务器
2035去旅行5 小时前
嵌入式开发,如何选择C标准库
linux·arm开发
刘延林.5 小时前
win11系统下通过 WSL2 安装Ubuntu 24.04 使用RTX 5080 GPU
linux·运维·ubuntu
CodeOfCC6 小时前
Linux 嵌入式arm64安装openclaw
linux·运维·服务器
宵时待雨7 小时前
linux笔记归纳3:linux开发工具
linux·运维·笔记
magrich7 小时前
安装NoMachine并解决无外接显示器桌面黑屏
linux·运维·服务器