ご覧いただきありがとうございます。
今回、ターミナルからシェルスクリプトファイル(.sh)を使って、通信速度を一定時間毎に測定するプログラムを作り、測定したデータをファイル内からMySQLにアクセスしてデータベースに保存しようと考えております。
動作の大まかな流れは
12回測定(while)する中で
通信速度の測定 7行目
↓
時間の取得 10行目
↓
通信速度と時間をエクセルファイルへ送信 12行目
↓
コマンドプロントにも通信速度と時刻を表示 15行目以降
↓
取得したデータと時間をmySQLのinsert文でデータベースへ挿入(ここで詰まっています) 23行目
取得したデータは上り、下り等の項目毎のカラムに分ける為、8行目で配列構造?にしています。
($LIST[0],$LIST[1]など)
以下コードになります。
sh
1#! /bin/bash 2 3count=0 4while ((count < 12)) 5do 6 #コマンド実行結果の改行コードを,に置換(エクセルでこれが次のマスへの改行になっている)して数字以外の文字も除外している 7 DATA=`speedtest-cli --simple | tr '\n' ',' | tr -cd '0123456789.,'` 8 LIST=(${DATA//,/ }) 9 #実行時刻を取得 10 TIME=`date '+%Y/ %m/%d%T'` 11 #結果をresult.csvファイルに出力 12 echo $TIME','$DATA >> result.csv 13 14 #コマンドに時刻・測定結果表示・試行回数を表示 15 echo $TIME 16 echo $DATA 17 echo $count 18 19 #DBへ送信 20 #実行時刻を再取得(DB用に変換) 21 TIME=`date '+%Y/%m/%d%T' | tr -cd '0123456789.,'` 22 23 mysql -u user -ppass dbname -e ”insert into Tablename(Day,Ping,Download,Upload)values(${TIME},${LIST[0]},${LIST[1]},${LIST[2]});” 24 25 count=$((count + 1)) 26 sleep 10 ; 27done
以下エラーメッセージ
sh
1./test1-2.sh: line 23: syntax error near unexpected token `(' 2./test1-2.sh: line 23: ` mysql -u user -ppass dbname -e ”insert into Tablename(Day,Ping,Download,Upload)values(${TIME},${LIST[0]},${LIST[1]},${LIST[2]});”'
sh
1show create table Tablename; 2+-----------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 3| Table | Create Table | 4+-----------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 5| Tablename | CREATE TABLE `Tablename` ( 6 `id` mediumint(9) NOT NULL AUTO_INCREMENT, 7 `Day` datetime DEFAULT NULL, 8 `Ping` double(6,3) DEFAULT NULL, 9 `Download` double(5,2) DEFAULT NULL, 10 `Upload` double(5,2) DEFAULT NULL, 11 PRIMARY KEY (`id`) 12) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 | 13+-----------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 141 row in set (0.01 sec)
こちらが挿入先のデータベースの構成になります。
|列1|列2|列3|
| Field | Type | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+----------------+
| id | mediumint(9) | NO | PRI | NULL | auto_increment |
| Day | datetime | YES | | NULL | |
| Ping | double(6,3) | YES | | NULL | |
| Download | double(5,2) | YES | | NULL | |
| Upload | double(5,2) | YES | | NULL |
クォーテーションの記入漏れだと思いつくまではいいのですが、ネット記事を探しても自力ではどこにつけたらいいのか見つけることができませんでした。
知識不足でご不便、お手数おかけしますが、ご指摘いただけると幸いです。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー