を失敗している私は、次のbashスクリプトを持っている: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を出力するはずです。 どこが間違っているか教えていただけますか?
ありがとうございました。
#!/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'コマンドの出力ではなく整数の終了コードを表します。あなたは出力をつかんで確認する必要があります。 – anubhava
@anubhava ok。あなたは私に例を教えてくれますか? – Happydevdays
@Happydevdays: 'psql'コマンドの直後に' echo $? 'を追加すると、anubhavaの意味を知ることができます。次に、2番目の 'echo $?'を追加すると、最初の 'echo'コマンドが成功したので、状態コード0で終了したので、" 0 "を表示します。 –