我用$?是否正确?

Luc*_*c M 1 bash

我想验证我是否可以连接到数据库(PostgresSQL)到bash脚本

我执行以下命令(PGUSER,PGDATABASE ...已设置)

 psql -f sql/test_connection.sql > /dev/null 2>&1
Run Code Online (Sandbox Code Playgroud)

当我回音时$?,如果成功则显示0,否则显示2.

它在终端中工作正常.

当我将它放入bash脚本时,即使凭据不正确,结果也始终为0.

psql -f sql/test_connection.sql > /dev/null 2>&1

if [ $? ]
then
   echo "OK"
else
   echo "Doudh!!"
fi
Run Code Online (Sandbox Code Playgroud)

我在哪里错过了什么?

cod*_*ict 5

试试这个:

if [ $? -eq 0 ]
Run Code Online (Sandbox Code Playgroud)

运行脚本时,使用-x选项打印出正在执行的每个命令和实际值.它对调试非常有用.您将看到与什么相比较的内容,传递给哪个命令的内容.

$sh -x prg.sh
Run Code Online (Sandbox Code Playgroud)

要么

$bash -x prg.sh
Run Code Online (Sandbox Code Playgroud)