【发布时间】:2021-10-28 05:48:52
【问题描述】:
我想检查一个变量是否以冒号 : 开头。我可以做的事情
== 或 =~ 但不知道是否更喜欢其中一个。
if [[ "$var" == :* ]]; then
if [[ "$var" =~ ^:.* ]]; then
我倾向于前者,但后者的主要优势是什么。一个比另一个更可靠吗?
【问题讨论】:
-
你的两个例子都没有问题,所以我会说这是偏好。可能存在一些性能差异,但这是否会在基准测试之外产生任何实际影响是值得怀疑的。
-
第三个选项:获取第一个字符并检查它:
[[ "${var:0:1}" == : ]] -
.*可以省略。 -
第一个选项的变体可以在任何 POSIX 兼容的 shell 中工作:
case $var of :*) ... ;; ; esac。