3

我在脚本中使用 FreeTDS 将记录插入 MSSQL 数据库。USEandINSERT命令有效,但该命令exit无效并且挂起。我试过重定向stdoutcat抱怨。我想我会使用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

4

1 回答 1

2

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

如果没有,请删除-.

此外,正如 Ignacio 所建议的,您可以将其写成更简洁的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
于 2011-03-26T21:47:49.167 回答