作为我的bash shell脚本的一部分,我运行以下代码:
sql -umyuser mydb <<-EOSQL
MODIFY $MYTABLECLEAR TO TRUNCATED;\g
EOSQL
这很好用,但我在终端窗口输出,我想避免。通常我只是在命令的末尾添加一个>/dev/null
语句,我想要抑制输出,但是如果不搞砸EOSQL
文本块,我就不能这样做。
我尝试过以下内容:
`sql -umyuser mydb <<-EOSQL
MODIFY $MYTABLECLEAR TO TRUNCATED;\g
EOSQL` >/dev/null
但是我在终端窗口收到一条消息TERMINAL: command not found
。
有趣的是,尽管有这条消息,sql命令仍会运行。
非常感谢任何帮助。
谢谢,
保罗。
答案 0 :(得分:7)
只需在here-document重定向后立即添加输出重定向;此文档本身直到下一行才开始。
sql -umyuser mydb <<-EOSQL > /dev/null
MODIFY $MYTABLECLEAR TO TRUNCATED;\g
EOSQL
作为助记符,您可能(错误)将<<-EOSQL
解析为< <-EOSQL
,在这种情况下,以<
或<-
开头的文件名表示“脚本内”用于重定向的文件而不是常规的命名磁盘文件。但请理解,<<
和<<-
实际上是<
的独立运算符。无论哪种方式,here-doc运算符都可以根据需要与其他重定向运算符混合使用,如注释所指出的那样。
答案 1 :(得分:3)