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

如何在Unix脚本直接管道中使SQLCL的SET ECHO ON生效?

解决SQLCL管道中SET ECHO ON不生效的问题

直接在管道中让SET ECHO ON生效,核心是让SQLCL能正确识别每条独立命令——你之前的问题出在普通echo没有将\n解析为实际换行符,导致两条命令被当成一行处理,SET指令因此被忽略。以下是几种无需中转文件的解决方案:

  • 使用printf替代echo,它默认支持转义字符解析:

    printf "SET ECHO ON;\nSELECT COLA FROM MYTABLE;\n" | sql -L <connectionstr>
    

    printf会把\n转换成实际换行,让SET ECHO ON;和查询语句作为两条独立命令被SQLCL处理。

  • 如果用Bash的echo,加上-e选项开启转义字符解析:

    echo -e "SET ECHO ON;\nSELECT COLA FROM MYTABLE;" | sql -L <connectionstr>
    

    -e参数会让echo把\n识别为换行,而非字面字符串。

  • 用Bash的Here-String语法,写法更直观:

    sql -L <connectionstr> <<< $'SET ECHO ON;\nSELECT COLA FROM MYTABLE;'
    

    $'...'是Bash的特殊语法,会自动解析内部的转义字符,生成带换行的命令内容直接传给SQLCL。

这些方法都能让SET ECHO ON正常生效,同时执行查询后自动退出SQLCL。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 03:52:11