2016-04-12 18 views
1

ifステートメントでsqlクエリを実行しようとしています。ここに私のシェルスクリプトifステートメントシェルスクリプトでsqlクエリを実行

#!/bin/bash 

var="select col1, col2 from table_name where condition;" 

    count=$(ping -c 4 192.168.7.204 | awk -F',' '{ print $2 }' | awk '{ print $1 }') 

     if [ $count -eq 0 ]; then 

     mysql -h 192.168.7.204 -u username -ppassword db_name<<EOFMYSQL 
     $var 
     EOFMYSQL 

     fi 

ですが、それは私にセンチネルEOFMYSQLが左余白に直面しなければならないヒアドキュメントは、インデントない

./test.sh: line 18: warning: here-document at line 12 delimited by end-of-file (wanted `EOFMYSQL') 
./test.sh: line 19: syntax error: unexpected end of file 

答えて

1

エラーを示しています。

var="select col1, col2 from table_name where condition;" 

count=$(ping -c 4 192.168.7.204 | awk -F',' '{ print $2 }' | awk '{ print $1 }') 

if [ $count -eq 0 ]; then  
    mysql -h 192.168.7.204 -u username -ppassword db_name <<EOFMYSQL 
$var 
EOFMYSQL  
fi 

<<EOFMYSQL<<-EOFMYSQLに変更すると、タブだけを使用し、スペースは使用しない限り、インデントすることができます。

the manualを参照してください。

+0

申し訳ありませんが、私はあまり知りません。私はSQLとシェルスクリプトも学んでいます。私を詳細に説明してもらえますか? – Lnux

+0

「EOFMYSQL」の前に行にスペースを入れることはできません。それはライン上の最初のものでなければなりません。 –

+1

この単純なケースでは、* HERE *ドキュメントは必要ありません。どちらのシェルを使用していますか? – user1934428