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

Bash脚本单引号冗余转义问题:命令执行结果不符合预期

问题原因及修正方案

核心问题点

  • 选项与值的空格错误:脚本里写的--query =,bash会把--query、=、后续内容当成三个独立参数,正确写法应该是--query=(无空格)或者--query "...",这样才能让--query和对应值被识别为一个完整选项。
  • 引号转义逻辑混乱:脚本里用了HTML转义符",bash完全不识别这个符号,再加上嵌套引号的处理错误,导致最终命令出现大量多余的转义单引号和错误的引号包裹。
  • 变量引用的潜在隐患:'$userId'放在单引号中时,bash不会解析变量(这次传纯数字没出问题,但如果变量包含空格就会直接失效),正确的变量引用应该用双引号包裹。

修正后的脚本

#!/usr/bin/env bash

userId="$1"

set -x

function runQuery {
    # 用双引号直接包裹查询语句,变量放在双引号内会被正确解析
    output=$(sf data query --query="SELECT Id FROM User WHERE Id = '$userId'")
    echo "$output"
}

runQuery

验证执行结果

运行sh test.sh 005后,实际执行的命令会和你期望的一致:
sf data query --query="SELECT Id FROM User WHERE Id = '005'"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 10:22:39