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

时间:2011-03-26 21:15:12

标签: bash freetds

我在脚本中使用FreeTDS将记录插入MSSQL数据库。 USEINSERT命令有效,但exit命令不起作用,它会挂起。我已尝试重定向stdout,但cat抱怨。我想我会用Expect否则。咩。感谢。

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

1 个答案:

答案 0 :(得分:2)

您的意思是:cat tempfile -?这意味着它将等待你按 Ctrl + D ,因为它也试图从标准输入读取。

如果没有,请删除-

另外,正如伊格纳西奥所暗示的那样,你可以把它作为一个heredoc写得更干净:

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