bash脚本捕获其他下标输出

时间:2013-11-30 12:29:02

标签: bash shell psql

我有一个创建数据库的简单脚本

#!/bin/sh
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
psql -d track -q -f "$DIR"/create.sql > RESULT
RESULT="$(psql -d track -q -f "$DIR"/create.sql)"
echo $RESULT

这样:

$ bash MakeDB.sh  > result

生成空结果文件

psql生成一些输出到终端的日志信息,事情是我无法重定向该信息,因此我想进一步传递它。

有没有办法存储psql输出?最好不要在终端上打印。

1 个答案:

答案 0 :(得分:4)

  

psql produces some log info that is output to terminal, the thing is I can't redirect that info, I want to pass it further as a result.

让你的脚本像这样:

#!/bin/sh
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
psql -d track -q -f "$DIR"/create.sql > RESULT 2>&1
psql -d track -q -f "$DIR"/create.sql

然后,您可以使用以下语法将stderr重定向到与stdout相同的文件:

bash MakeDB.sh > result 2>&1