我在脚本中使用FreeTDS将记录插入MSSQL数据库。 USE
和INSERT
命令有效,但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
答案 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