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

相关推荐
Web极客码2 分钟前
使用 apt 和 dpkg 查看Ubuntu 22.04已安装的软件
linux·运维·ubuntu
极地星光9 分钟前
Xubuntu下载以及实时内核安装与验证全指南
linux
txzz888811 分钟前
CentOS-Stream-10 YUM第三方库配置
linux·运维·服务器·centos·yum第三方库配置
SELSL41 分钟前
标准IO总结
linux·c语言·标准io·stdio·标准io与文件io的区别
大猫和小黄44 分钟前
Ubuntu环境下GitBlit安装部署与版本库迁移
linux·运维·git·ubuntu·gitblit
点亮一颗LED(从入门到放弃)1 小时前
设备树驱动(6)
linux
加勒比之杰克1 小时前
【操作系统原理】软硬链接与动静态库
linux·os·动静态库·软硬链接
KingRumn1 小时前
Linux进程间通信之消息队列(POSIX)实现篇
linux·服务器
loosed1 小时前
ubuntu navicat17连接本机msyql8 /run/mysqld/mysqld.sock问题
linux·mysql·ubuntu·adb
小猪佩奇TONY1 小时前
Linux 内核学习(13) --- linux 内核并发与竞态
linux·服务器·学习