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

如何准确提取Cloud Foundry中cups.sh的服务名与-p参数?

解决CUPS命令脚本解析问题

你的问题出在使用cut按空格分割字段——因为-p后面的JSON参数本身包含空格,cut会把它拆成多个独立字段,导致提取不完整。下面给你两种可靠的提取方法,能准确获取服务名和完整的参数内容:

方法1:使用awk分割(简单直观)

利用awk指定-p 作为分隔符,直接提取-p后面的全部内容,不管里面有没有空格:

File=cups.sh
# 先过滤注释和空行
sed -e 's/[[:space:]]*#.*// ; /^[[:space:]]*$/d' "$File" | while read -r line
do
  # 提取服务名:cf cups 后的第一个非空格字符串
  service_name=$(echo "$line" | awk '{print $3}')
  # 提取-p后面的所有内容
  params=$(echo "$line" | awk -F "-p " '{print $2}')
  
  # 输出结果(可根据需求调整处理逻辑)
  echo "服务名称: $service_name"
  echo "参数内容: $params"
  echo "------------------------"
done

方法2:使用sed正则匹配(更精准)

通过正则表达式直接捕获服务名和参数部分,适合格式固定的cf cups命令:

File=cups.sh
sed -e 's/[[:space:]]*#.*// ; /^[[:space:]]*$/d' "$File" | while read -r line
do
  # 捕获cf cups后的服务名(非空格字符)
  service_name=$(echo "$line" | sed -E 's/^cf cups ([^ ]+).*/\1/')
  # 捕获-p后面的所有内容
  params=$(echo "$line" | sed -E 's/^cf cups [^ ]+ -p (.*)/\1/')
  
  echo "服务名称: $service_name"
  echo "参数内容: $params"
  echo "------------------------"
done

关键注意点

  • 用read -r替代普通read,避免脚本意外转义参数中的特殊字符(比如JSON里的引号)
  • 两种方法都先通过sed过滤了注释行和空行,确保只处理有效命令行

内容的提问来源于stack exchange,提问作者B.T Anand

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:23:02