【问题标题】:Run command, and then add results via SQLCMD运行命令,然后通过 SQLCMD 添加结果
【发布时间】:2019-07-01 04:47:45
【问题描述】:

我正在尝试在 bash 中运行命令,然后使用 SQLCMD 将结果输出到数据库

以下是我的部分脚本

commandResults=$(/home/techionadmin/ssh.sh ${d9} "${d5}")
newcmd=${commandResults}
ranattimestamp=$(date +%s)
echo ${newcmd}
sqlcmd -S SERVER -d DB-U USER-P PASSWORD-Q \ 
"SET NOCOUNT ON UPDATE micro_i_cmd_queue SET status='EXECUTED', result='${newcmd}', ran_at='$ranattimestamp' WHERE id='$d1'" -b

例如,我在 Linux 机器上运行“ls -l”命令,然后想将结果放入 DB echo ${newcmd} 行一切正常,输出一切正常 但是当我运行 SQLCMD 时出现错误

 Unclosed quotation mark after the character string

除此部分外,其他一切正常

我尝试的是删除所有换行符或回车但没有效果 仅当我按照以下方式进行操作时才有效。

commandResults=$(/home/techionadmin/ssh.sh ${d9} "${d5}" | tr -d '\040')

注意 | tr -d '\040' 最后 - 所以它会删除所有空格并留下换行符、制表符和回车符 如果我尝试用 '~' 之类的字符替换所有空格,我可以在服务器端修复它,但它不起作用

帮助!!!!

以下错误的完整输出

Unclosed quotation mark after the character string 'total 5260
-rw-r--r--  1 pi pi 1791164 Nov 22  2018 2018-11-22-    101115_1280x1024_scrot.png
-rw-r--r--  1 pi pi 1792668 Nov 22  2018 2018-11-22-    101123_1280x1024_scrot.png
-rw-r--r--  1 pi pi    1412 Jun 17 13:18 checkver.sh
drwxr-xr-x  2 pi pi    4096 Nov 22  2018 Desktop
drwxr-xr-x  2 pi pi    4096 Oct 10  2018 Documents
drwxr-xr-x  2 pi pi    4096 Oct 10  2018 Downloads
-rw-r--r--  1 pi pi 1661676 Oct  9  2018 get-pip.py
drwxr-xr-x  2 pi pi    4096 Jan  8 12:35 Heartbeat
drwxr-xr-x  8 pi pi    4096 Dec  5  2011 i2c-tools-3.1.0
-rw-r--r--  1 pi pi   66840 May  1  2012 i2c-tools_3.1.0.orig.tar.bz2
drwxr-xr-x  2 pi pi    4096 Oct 10  2018 MagPi
drwxr-xr-x  5 pi pi    4096 Jun 12 12:26 Micro-I
drwxr-xr-x 14 pi pi    4096 Jun 19 12:07 MicroI_Deployment
drwxr-xr-x  2 pi pi    4096 Oct 10  2018 Music
-rw-r--r--  1 pi pi       0 Jul  1 14:54 nul
drwxr-xr-x  2 pi pi    4096 Oct 10  2018 Pictures
drwxr-xr-x  2 pi p
Msg 102, Level 15, State 1, Server tgitsupport, Line 1
Incorrect syntax near 'total 5260
-rw-r--r--  1 pi pi 1791164 Nov 22  2018 2018-11-22-101115_1280x1024_scrot.png
-rw-r--r--  1 pi pi 1792668 Nov 22  201'.

'total 5260'后面有特殊字符????

【问题讨论】:

  • 我对@9​​87654325@不熟悉,但是对bash和mysql做了很多。检查sqlcmd --help 选项(我假设您的-b"batch"),并检查类似于--execute--silent 的选项。对于mysql-B 是批处理,mysql -Bse "SQL command;" 通常可以完成这项工作。 (不确定sqlcmd 是否需要关闭';',但我可以看到这会导致引用问题)

标签: linux bash sqlcmd


【解决方案1】:

什么是输出:echo ${newcmd}

也许它在字符串中包含一个 ',并且在 result='${newcmd}' 处过早地关闭了你的引号

【讨论】:

  • 嗨 rvillabl,不,没有 ' 字符,我只能猜测,当它到达 SQLCMD 部分时,有一个特殊的字符,比如返回,所以 SQLCMD 期待一个 ' 字符结束这条线 - 我不确定。如果我清除所有空格,它可以工作,但如果我这样做,它就无法读取。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-10
  • 1970-01-01
相关资源
最近更新 更多