You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bash脚本匹配特定格式名称及简化条件逻辑的实现方法

解决Bash脚本匹配Kubernetes CronJob名称的两个问题

问题1:实现精准匹配-数字$格式的名称

当前脚本里的grep $1会模糊匹配包含目标数字的任意名称(比如传入0会同时命中admin-job-0和admin-job-10)。要实现连字符+数字结尾的精准匹配,只需修改grep的正则表达式,锚定行尾并明确匹配前置连字符:

将原脚本中的grep $1替换为:

grep "-${1}$"
  • -:匹配名称中的连字符
  • ${1}:引用传入的数字参数
  • $:锚定行尾,确保数字后无其他内容

如果需要兼容特殊字符或更严谨的正则,也可以用扩展正则写法:

grep -E "-${1}$"

问题2:去除if/else逻辑,统一处理有无参数的情况

可以通过在awk中整合匹配逻辑,实现无需分支判断的统一处理:

优化后的完整脚本

fetch-admin-job() {
  kubectl get cronjob | awk -v target_num="$1" '
    # 匹配所有以admin-job开头的行
    /^admin-job/ {
      # 传入参数时,精准匹配结尾为"-参数"的名称
      if (target_num != "") {
        if ($1 ~ "-" target_num "$") {
          print $1
        }
      } else {
        # 无参数时,输出第一个匹配的名称后退出
        print $1
        exit
      }
    }
  '
}

# 使用示例
fetch-admin-job 0  # 获取admin-job-0
fetch-admin-job     # 获取第一个admin-job开头的CronJob

脚本说明

  • 通过-v target_num="$1"将Bash参数传入awk
  • 统一匹配^admin-job开头的行,再根据是否有参数执行对应逻辑:
    • 有参数时,用$1 ~ "-" target_num "$"精准匹配目标编号的CronJob
    • 无参数时,输出第一个匹配项后立即exit,避免输出所有结果

内容的提问来源于stack exchange,提问作者Oliver Williams

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 02:27:19