bash - 在 Bash 中,如何根据单个字符变量的各种条件进行分支?
问题描述
考虑这个 Python 代码:
var = '1'
if var in '123':
print('in 123')
elif var == 'x':
print('is x')
elif var == 'y':
print('is y')
一个人如何在 Bash 中干净利落地写这个?
解决方案
Bash 和 POSIX 的等价物是case
.
然后,您的 Python 示例将转换为:
var='1'
case "${var}"
in
[123])
printf 'in 123\n'
;;
x)
printf 'is x\n'
;;
y)
printf 'is y\n'
;;
esac
您可以在模式中使用POSIX 模式匹配(又名 glob),例如*foo*) printf 'contains foo\n'
.
并且默认的“案例”(default
其他语言的switch
构造)将是*)
.
推荐阅读
- spring-boot - 如何找出正在运行的模式脚本 spring-boot?
- php - WordPress Metabox 不会保存
- python - 查找列表 1 中也存在于列表 2 中的项目
- azure - 无法在指定时间内验证复制源
- node.js - 登录网页并解析数据
- java - 你如何获得客户的IP地址?(Spring WebFlux WebSocket)
- excel - 如何从我的本地 excel 连接到在线 excel
- vb.net - 索引和长度必须引用字符串中的一个位置。" & vbCrLf & "参数名称:length vb.net
- jsf - ui:repeat 的索引为空
- javascript - 如果数据很大,JQuery ajax 不会在 POST 中发送完整数据