我有以下的bash脚本:
```bash ```
我不确定我哪里出错了。我需要返回“OK”来表明这个特定的错误,其他任何错误都应该输出FAIL。 你能告诉我我哪里出错了吗?
谢谢。
编辑1
我修改了代码以捕获输出,而不仅仅是rc:
```bash ```
#!/bin/sh
psql -U postgres -c "CREATE DATABASE test TEMPLATE template0;"
if [ $? -eq 0 ]; then
echo OK
else
if [ $? = 'ERROR: database "test" already exists' ]; then
echo OK
else
echo FAIL
fi
fi
目前它出现了以下错误:
testbox:/tmp# sh test.sh
ERROR: database "test" already exists
FAIL
我不确定我哪里出错了。我需要返回“OK”来表明这个特定的错误,其他任何错误都应该输出FAIL。 你能告诉我我哪里出错了吗?
谢谢。
编辑1
我修改了代码以捕获输出,而不仅仅是rc:
#!/bin/bash
output=$(psql -U postgres -c "CREATE DATABASE test TEMPLATE template0;")
ret=$?
if [[ $ret -eq 0 ]]; then
echo OK
else
if [[ $output == 'ERROR: database "test" already exists' ]]; then
echo OK
else
echo FAIL
fi
fi
但我收到了这个错误:
ERROR: database "test" already exists
sh: ERROR: database "test" already exists: unknown operand
FAIL
psql
命令的输出。 您需要获取输出并进行检查。 - anubhavapsql
命令之后立即添加echo $?
,你就会明白anubhava的意思了(它只会打印一个数字,可能是“1”)。然后再添加第二个echo $?
,你会发现其中一个打印“0”,因为第一个echo
命令成功执行,因此以状态码0退出。 - Gordon Davisson