捕获变量中的 bash 命令错误

捕获变量中的 bash 命令错误

psql我在 Bash 脚本中使用(PostgreSQL)命令:

function create_database () {
       sudo -u postgres psql -c "CREATE DATABASE $1 WITH OWNER $2;" 2>ERROR
        if [[ $? -ne 0]; then
          echo "error -> $ERROR"
          return 1
        else:
         ....
         return 0
}

我试图捕获error并将其传递给变量,但变量为空。

答案1

2>ERROR将输出发送stderr到名为 的文件ERROR,而不是变量。请尝试以下操作:

ERROR=$(sudo -u postgres psql -c "CREATE DATABASE $1 WITH OWNER $2;" 2>&1 1>/dev/null)

相关内容