2

私はこのスクリプトをpostgresのインストールのモジュールとして作成しました。これは、データベースが作成されたことをユーザーに示し、データベースが作成されたことを確認するための入力を取得するためのものです。スクリプトを実行すると、エラーが発生します

./dbtest: line 39: [: missing `]'

「はい」の周りに「」を追加しようとしましたが、「はい」の周りに「」を追加しようとしましたが、何が欠けているのかわかりません。スクリプトは次のとおりです

#   
#
# Check to make sure the database was created and who is the owner
#
#
 if [ -f showdb ];

 then 
      cp showdb /home

 else
      echo " show database file is missing "

fi

if [ -f /home/showdb ];

 then
       su - postgres -c '/home/showdb'

       echo " Do you see the data name created listed above? "
       echo " "
       echo " Type yes or no (type out the whole word please) "
       echo " "
       read dbawr

            if [ $dbawr == yes && $dbawr == Yes ];

                then 

                     echo "Great!"
                     exit

                else
                     echo " Please contact tech support "
                     pause " Press [CTRL] [Z] to exit the program now " 
              fi

  else

         echo " File Missing!!"

fi

このスクリプトには何が欠けていますか?

ありがとう!

4

1 に答える 1

6

&&条件付きの単一括弧を使用してブール演算子を使用することはできません[ test = test ]。bash(または同様のシェル)を使用している場合、推奨される構文は二重括弧を使用することです。

[[ this == this && that == that ]]

移植性が心配な場合は、単一の角かっこを使用する必要がありますが、次のように使用してください。

[ this = this ] && [ that = that ]

double equals()を使用しなかったことに注意してください==。これもposixに準拠していません。

于 2012-11-03T13:46:23.047 に答える