bash - bash脚本中变量的正则表达式
问题描述
我试图从代表路径的变量中删除前缀。
目前这是我的代码:
for f in /Users/username/Documents/Dev/beneficiary-service/src/main/helm/*
do
echo $f
if [[ $f == 'values'* ]]
then
yq d -i $f 'resources.'
fi
done
我打印了 $f 来查看它的输出。我希望它只是文件名,没有路径(values-stg.yaml)。但是,这是输出:
+ echo /Users/username/Documents/Dev/beneficiary-service/src/main/helm/values-stg.yaml
/Users/username/Documents/Dev/beneficiary-service/src/main/helm/values-stg.yaml
+ [[ /Users/username/Documents/Dev/beneficiary-service/src/main/helm/values-stg.yaml == \v\a\l\u\e\s* ]]
而且,“if”语句永远不会是真的,因为它认为 values* 是字面上的,而不是“任何以值开头的东西”
解决方案
路径扩展包括指定的整个路径。您可以使用参数扩展将其删除
[[ ${f##*/} == values* ]]
“如果”陈述永远不会是真的
这不是真的。values
但是,不需要引用,因为没有一个字符是特殊的。
推荐阅读
- python - 序列搜索期间的正则表达式错误
- excel - 使用单个公式合并到列
- python - Selenium python 如何执行单击切换按钮
- javascript - 502 Bad Gateway 和 503 Service Unavailable - 但不一致
- sql - SQL Server 仅选择字符串的一部分
- python - 这个 for 循环的时间复杂度是多少?
- javascript - 如何为每个唯一用户而不是 localStorage 实现持久化?
- r - 将一个向量与另一个向量的每个元素进行比较
- python - AttributeError:“NoneType”对象在覆盆子的速度监视器中没有属性“组”
- swiftui - 如何在 SwiftUI 中将 Closure 定义为 Button 的操作?