1

mysql クエリを実行する bash スクリプトを作成しようとしています。結果の数が 1 の場合は、何かを実行します。私はそれを動作させることはできません。

#!/bin/sh
file=`mysql -uroot -proot -e "select count(*) from MyTable.files where strFilename='file.txt'"`
if [[ $file == "count(*) 1" ]];
then
    echo $file
else 
    echo $file
    echo "no"
fi

クエリが機能することを確認しました。私はこれを返し続けます

count(*) 1
no

理由はわかりませんが、変数 $file の型と関係があるのではないかと思います。何か案は?

4

3 に答える 3

0

それは実際にはそうではなくcount(*) 1、代わりにcount(*)\n1何かだと思います。すべての文字をスペースにecho $file変換しますが、それらの空白文字を区別します。この場合は、別の結果が得られます。(引用符に注意してください。)IFS==echo "$file"

于 2013-06-20T02:34:24.670 に答える
0

私はあなたのスクリプトを書き直しました、それは今動作します:

#!/bin/sh
file=`mysql -uroot -proot -e "select count(*) as count from MyTable.files where strFilename='file.txt'" | cut -d \t -f 2`
if [ $file == "1" ];
then
    echo $file
else
    echo $file
    echo "no"
fi

'cut' を使用して mysql の出力を 2 つのフィールドに分割し、2 番目のフィールドの内容を $file に入れることで、カウント フィールドに適切な名前を付けています。次に、「1」の $file をテストできます。それがあなたを助けることを願っています..

于 2013-06-20T02:55:47.460 に答える