PowerShell中jq字符串插值命令无法处理空格的问题
在PowerShell中解决jq带空格的字符串插值语法错误问题
解决方案
以下几种方法可以解决这个空格导致的语法错误:
方法一:转义双引号并包裹完整脚本
在PowerShell中,用反引号(`)转义jq脚本内的双引号,同时用双引号包裹整个jq脚本,确保PowerShell将其作为单个参数传递:echo '{"key": "value"}' | jq "\"The input was:\(.key)\""执行后会得到预期结果:
"The input was:value"方法二:使用PowerShell Here-String
Here-String可以避免复杂的引号转义,适合处理带空格或换行的jq脚本:echo '{"key": "value"}' | jq @" "The input was: \(.key)" "@方法三:通过文件调用jq脚本
将插值逻辑保存为单独的.jq文件(比如命名为interpolate.jq),内容如下:"The input was:\(.key)"然后通过
-f参数加载脚本执行:echo '{"key": "value"}' | jq -f interpolate.jq
问题原因
错误源于PowerShell的引号解析机制:当直接使用jq '"The input was:\(.key)"'时,PowerShell会将空格后的was:\(.key)"识别为独立参数传递给jq,导致jq接收到不完整的脚本,最终触发语法错误。通过转义或特殊字符串格式,可以确保整个jq脚本作为单个完整参数被传递,避免拆分。
内容的提问来源于stack exchange,提问作者Gustavo
相关产品推荐
相关产品推荐

