小编use*_*448的帖子

执行使用混合引号和asterix的动态shell脚本命令

我有以下我正在尝试编写脚本.我试图迎合混合报价以及asterix而撞墙.

这就是我所拥有的

cmd_1="/usr/local/nz/bin/nzsql -d ${SOURCE_DB} -c "
cmd_2="\"create external table '${EXTERNAL_PATH}${EXTERNAL_FILE}'"
cmd_3=" USING (QUOTEDVALUE 'DOUBLE' ESCAPECHAR '\' DELIM ',' TIMESTYLE '24HOUR' LOGDIR '${EXTERNAL_PATH}' ENCODING 'INTERNAL')"
cmd_4=" as select * from ${SOURCE_TABLE}\""
cmd=${cmd_1}${cmd_2}${cmd_3}${cmd_4}
Run Code Online (Sandbox Code Playgroud)

哪个echo的看起来很好,实际上运行时复制并粘贴到命令行.

/usr/local/nz/bin/nzsql -d mydatDba -c "create external table '/datawarehouse/development/externaldata/output/EXT_mytable.csv' USING (QUOTEDVALUE 'DOUBLE' ESCAPECHAR '\' DELIM ',' TIMESTYLE '24HOUR' LOGDIR '/datawarehouse/development/externaldata/output/' ENCODING 'INTERNAL') as select * from mytable"
Run Code Online (Sandbox Code Playgroud)

为了使它正确回显,我确实必须将$ {cmd}包装在双引号中,因此对于看起来像这样的执行也是如此.

"${cmd}"
Run Code Online (Sandbox Code Playgroud)

从shell脚本运行但是我收到:没有这样的文件或目录.我已经验证了所涉及的目录,正如我所提到的,实际上可以将生成的内容复制并粘贴到命令行,它工作正常.

我只能假设我的echo命令和错误中回显的内容实际上并不是正在执行的内容.

建议如何获得"真实"命令回应和/或使用引号将非常感激.

谢谢.

bash shell quotes

3
推荐指数
1
解决办法
4470
查看次数

标签 统计

bash ×1

quotes ×1

shell ×1