2017-12-07 9 views
0

私は500データベースを持つフォルダを持っています。私は彼らから価値を得たいと思う。 forループの内側には「$ i」というdb2があります。うまくいかない。 $ iの代わりにフォルダの名前に書き込むと、コードが動作します。あなたはヒアドキュメントラベルを引用することによって無効にパラメータ置換を持つvaribleBash Sqlite3 Varrible

#!/bin/bash 
clear 

for i in $(ls); do 
    if [[ $i != test.sh ]]; then 
      if [[ $i != abc.db3 ]]; then 
      echo "--------- " $i " ---------" 

      sqlite3 abc.db3 <<'EOF' 
      ATTACH '$i' AS db2; 
      INSERT INTO Test (userId, sender, date) SELECT user_id, sender, send_date FROM db2.mt; 
EOF 
     fi 
    fi 

done  

echo "-------- Finish ----------" 
+0

実際に失敗するSQLコマンドは何ですか? –

+0

問題はファイル名にはなりません。このように使用すると、ATTACH '1208-2015.db3' AS db2; – aahmetbas

答えて

2

としてDB_NAMEを作ることができますどのように


代わりに<<EOFを使用してください。

また、データベース$iを直接開き、abc.db3を添付してください。

+0

ありがとうございます – aahmetbas