linux - 运行命令,然后通过SQLCMD添加结果

标签 linux bash sqlcmd

我正在尝试在 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”命令,然后想将结果放入数据库 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'后面有特殊字符吗????

最佳答案

什么是输出:echo ${newcmd}

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

关于linux - 运行命令,然后通过SQLCMD添加结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56830101/

相关文章:

c++ - 怎么知道哪段内存全为零

bash - 大括号展开和参数展开的顺序

bash - 将文本文件拆分为多个文件

command-line - 远程 Informix 11.5 命令行客户端

visual-studio-2017 - SQL72007 : The syntax check failed 'Unexpected end of file occurred.' in batch near :

batch-file - 将当前文件名从循环传递到批处理脚本中的标签

linux - Beagleboard 上的 Angstrom Boot 挂起

linux - 如何将命令输出作为多个参数传递给另一个命令

java - 如何在 Ubuntu Linux 中安装 Amazon Corretto?

Bash:找不到命令