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

相关推荐
重生之小比特10 小时前
【Linux系统】17 库制作与原理(上)
linux·运维·服务器
wzg201610 小时前
ubuntu 离线安装 docker-compose
linux·ubuntu·docker
行走的陀螺仪10 小时前
Claude Code 从入门到实战(三):Hooks、Skills、SubAgents 高级扩展
linux·编辑器·vim
Brilliantwxx10 小时前
【STM32】 内部 Flash 的 HAL 库函数详解与自定义封装实战
linux·服务器·网络
码途行者11 小时前
Linux 服务器 Golang 安装及环境变量配置
linux·运维·服务器
叼烟扛炮11 小时前
Linux 学习笔记(四十七):TCP 状态机与 tcpdump 抓包排雷实战
linux·网络·笔记·学习·tcp/ip·tcpdump
爱和冰阔落11 小时前
【Linux网络】UDP 聊天室怎么实现?从在线用户管理、消息广播到双线程收发与线程池
linux·运维·网络·udp
雪落漂泊12 小时前
Linux进程(三)概念:进程优先级与进程切换篇
linux·运维·服务器
拂拉氏12 小时前
【知识讲解】 Linux信号与可重入函数的认识
linux·运维·服务器
cynicism??12 小时前
Linux 与 ZXISOS 驱动开发架构对比
linux·驱动开发·架构