Bash 脚本使用 FreeTDS 建立连接、交互、不退出(只是挂起)

2024-04-20

我在脚本中使用 FreeTDS 将记录插入 MSSQL 数据库。这USEandINSERT命令有效,但是exit命令没有,它挂起。我尝试过重定向stdoutbutcat抱怨。我想我会用Expect http://www.nist.gov/mel/msid/expect.cfm否则。嗯。谢谢。

echo -e "USE db\nGO\nINSERT INTO db_table (id, data, meta)\nVALUES (1, 'data', 'meta')\nGO\nexit" > tempfile cat tempfile - | tsql -H 10.10.10.10 -p 1433 -U user -P pass


Did you mean to do this: cat tempfile -? It means that it will wait for you to press Ctrl+D, because it is trying to read from standard input as well.

如果没有,请删除-.

另外,正如 Ignacio 建议的那样,您可以将其编写为更清晰的定界符:

tsql -H 10.10.10.10 -p 1433 -U user -P pass <<EOF
USE db
GO
INSERT INTO db_table (id, data, meta)
VALUES (1, 'data', 'meta')
GO
exit
EOF

或者只是用文字换行符进行回显而不是\n:

echo "
USE db
GO
INSERT INTO db_table (id, data, meta)
VALUES (1, 'data', 'meta')
GO
exit
" > tempfile

然后使用标准输入重定向来运行它(<) 像这样:

tsql -H 10.10.10.10 -p 1433 -U user -P pass < tempfile
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Bash 脚本使用 FreeTDS 建立连接、交互、不退出(只是挂起) 的相关文章

随机推荐