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

如何提取pm2 id返回数组的首个元素并赋值给Shell变量

提取pm2 id命令返回结果中的目标ID

pm2 id <name> 输出的是方括号包裹的类数组字符串(例如[2]),不是Shell原生支持的数组结构,只要去掉前后包裹的方括号,就能拿到第一个元素也就是你需要的ID值,以下是几种可直接用的实现方式:

  • 方案1:Shell内置参数扩展(推荐,无额外依赖)
    兼容Bash、Zsh等绝大多数主流Shell,不需要调用外部命令,执行效率最高:

    APP_ID=$(pm2 id <name>)
    # 截取字符串,跳过第1位的左括号,截取到倒数第1位右括号之前的内容
    APP_ID=${APP_ID:1:-1}
    

    该方法对多位数ID同样生效,比如返回[24]时,最终APP_ID取值就是24。

  • 方案2:tr命令过滤字符(POSIX标准兼容)
    如果需要在Ash、Dash等精简Shell环境运行,可以通过管道过滤掉所有方括号字符:

    APP_ID=$(pm2 id <name> | tr -d '[]')
    
  • 方案3:jq解析JSON(格式容错性最高)
    pm2的返回格式符合JSON数组规范,如果环境中安装了jq工具,可以用标准JSON解析逻辑取值,即使后续输出带多余空格、格式有小调整也能正确识别:

    APP_ID=$(pm2 id <name> | jq -r '.[0]')
    

    加-r参数是为了直接输出原始值,不会额外包裹引号。

注意:不要直接把命令输出按Shell数组语法赋值,比如写APP_ID=( $(pm2 id <name>) ),这种写法拿到的第一个元素是带左括号的[2,不符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 05:45:40