CJ *_*cio 6 linux oracle sqlplus
如果我通过管道传输此脚本:
me:~/git/my-project$ find . -type f -not -path '*bin*' -name '*ignored*sql' -exec cat {} \;
dsadadasda SELECT * FROM some_table;
Run Code Online (Sandbox Code Playgroud)
变成sqlplus这样:
me:~/git/my-project$ find . -type f -not -path '*bin*' -name '*ignored*sql' -exec cat {} \; | sqlplus $my_connection_string | grep -i unknown
SQL> SP2-0734: unknown command beginning "dsadadasda..." - rest of line ignored.
Run Code Online (Sandbox Code Playgroud)
然后错误进入STDOUT而不是STDERR:
me:~/git/my-project$ find . -type f -not -path '*bin*' -name '*ignored*sql' -exec cat {} \; | sqlplus $my_connection_string 1>/dev/null
me:~/git/my-project$
Run Code Online (Sandbox Code Playgroud)
有什么方法可以配置sqlplus做其他事情吗?
小智 -2
我想在这里引用 Manoj 的话:
文件描述符 1 是标准输出 ( stdout)。
文件描述符 2 是标准错误 ( stderr)。
这是记住此构造的一种方法(尽管它并不完全准确):乍一看,这2>1可能是将 stderr 重定向到 stdout 的好方法。然而,它实际上会被解释为“将 stderr 重定向到名为 1 的文件”。&表示后面和前面的是文件描述符而不是文件名。所以结构变成:2>&1。
将 >& 视为重定向合并运算符。
参考来源链接:在 shell 中,“ 2>&1 ” 是什么意思?