我阅读了以下代码段:
mysql -u $USER -p $PASS <<EOF 2> /dev/null
CREATE DATABASE students;
EOF
确定。因此,这会运行mysql
客户端并执行CREATE DATABASE
我的问题是2>/dev/null
如何被视为EOF
的一部分?
我假设<<
是用于连接用户和密码参数后程序mysql
的输入。
那么2>/dev/null
如何不属于<<
?
答案 0 :(得分:3)
因为shell中的单词是由空格分隔的。 here-doc终结符是一个单词,因此它不会占用该行的其余部分。
http://www.gnu.org/software/bash/manual/bashref.html#Shell-Operation
答案 1 :(得分:2)
您的示例使用 Heredoc ,并且shell最终将此解释为重定向。它被视为其他形式的重定向。
等效示例:
Herestring:
mysql -u $USER -p $PASS<<<"CREATE DATABASE students;" 2>/dev/null
回声:
echo "CREATE DATABASE students;" | mysql -u $USER -p $PASS 2>/dev/null
我无耻地建议在Greg的Wiki上进一步阅读,因为它是一个很好的资源: