调试使用bash文件和nodejs执行的mysql查询
我试图创建一个cron作业来将数据插入表中,但它不起作用,我甚至找不到正确调试它的方法。 这个想法非常基本:获取文件路径,发布它并执行调试使用bash文件和nodejs执行的mysql查询,mysql,node.js,bash,cron,Mysql,Node.js,Bash,Cron,我试图创建一个cron作业来将数据插入表中,但它不起作用,我甚至找不到正确调试它的方法。 这个想法非常基本:获取文件路径,发布它并执行script.sh文件。脚本在文件内容上循环并将其插入数据库 HTML输入部分非常简单: <form action="http://127.0.0.1:9080/config" method="post"> <input type="text" name="data" style="width: 500px;"> <i
script.sh
文件。脚本在文件内容上循环并将其插入数据库
HTML输入部分非常简单:
<form action="http://127.0.0.1:9080/config" method="post">
<input type="text" name="data" style="width: 500px;">
<input type="submit" id="button" value="config"></input>
</form>
我认为问题出现在我的bash文件中:
#! /bin/bash
config=$(date +%s)
#copying what in target to $config ( example: $config = 11444345)
rsync -rvzh $1 /var/lib/tomcat7/webapps/ROOT/DataMining/target > /var/lib/tomcat7/webapps/ROOT/DataMining/$config
countC=0
countS=`wc -l /var/lib/tomcat7/webapps/ROOT/DataMining/$config | sed 's/^\([0-9]*\).*$/\1/'`
let countS--
let countS--
let countS--
while read LINEC #read line (file? countS!)
do
if [ "$countC" -gt 0 ]; then
if [ "$countC" -lt "$countS" ]; then
FILENAME="/var/lib/tomcat7/webapps/ROOT/DataMining/target/"$LINEC
count=0
countW=0
while read LINE
do
for word in $LINE;
do
echo "INSERT INTO data_mining.data (word, line, numWordLine, file) VALUES ('$word', '$count', '$countW', '$FILENAME');" >> /var/lib/tomcat7/webapps/ROOT/DataMining/query
mysql -u root -password< /var/lib/tomcat7/webapps/ROOT/DataMining/query
echo > /var/lib/tomcat7/webapps/ROOT/DataMining/query
let countW++
done
countW=0
let count++
done < $FILENAME
count=0
rm -f /var/lib/tomcat7/webapps/ROOT/DataMining/query
rm -f /var/lib/tomcat7/webapps/ROOT/DataMining/$config
fi
fi
let countC++
done < /var/lib/tomcat7/webapps/ROOT/DataMining/$config #finish while
#/bin/bash
配置=$(日期+%s)
#将目标中的内容复制到$config(示例:$config=11444345)
rsync-rvzh$1/var/lib/tomcat7/webapps/ROOT/DataMining/target>/var/lib/tomcat7/webapps/ROOT/DataMining/$config
countC=0
计数=`wc-l/var/lib/tomcat7/webapps/ROOT/DataMining/$config | sed's/^\([0-9]*\).$/\1/'`
算了吧--
算了吧--
算了吧--
读取行C时#读取行(文件?计数!)
做
如果[“$countC”-gt 0];然后
如果[“$countC”-lt“$countS”];然后
FILENAME=“/var/lib/tomcat7/webapps/ROOT/DataMining/target/”$LINEC
计数=0
countW=0
读行时
做
对于$LINE中的单词;
做
echo“插入到数据挖掘.data(字、行、numWordLine、文件)值(“$word”、“$count”、“$countW”、“$FILENAME”);”>/var/lib/tomcat7/webapps/ROOT/DataMining/query
mysql-u root-password/var/lib/tomcat7/webapps/ROOT/DataMining/query
让我们倒计时++
完成
countW=0
算了吧++
完成<$FILENAME
计数=0
rm-f/var/lib/tomcat7/webapps/ROOT/DataMining/query
rm-f/var/lib/tomcat7/webapps/ROOT/DataMining/$config
fi
fi
让我们看看C++
完成
我有一个目录中包含文本的文件,我将这个目录路径(以各种可能的方式…)传递给config,但由于某些原因,没有任何内容进入数据库
你知道我错过了什么吗?或者我如何调试它?所谓调试,我的意思是检查脚本是否执行了查询以及执行了什么查询,或者甚至只是从bash文件中回显……非常感谢您的任何想法,thx 粘贴脚本以查看一些主要问题。在深入研究之前,缺乏报价是一种风险。另外,考虑将一个示例输入连同它的预期输出一起,这样我们就可以调试BASH脚本了。可以通过在Sabang-Load中添加<代码> -Vx>代码>,在调试冗长模式下运行shell脚本。它将在运行前打印每一行,并替换其变量。
#! /bin/bash
config=$(date +%s)
#copying what in target to $config ( example: $config = 11444345)
rsync -rvzh $1 /var/lib/tomcat7/webapps/ROOT/DataMining/target > /var/lib/tomcat7/webapps/ROOT/DataMining/$config
countC=0
countS=`wc -l /var/lib/tomcat7/webapps/ROOT/DataMining/$config | sed 's/^\([0-9]*\).*$/\1/'`
let countS--
let countS--
let countS--
while read LINEC #read line (file? countS!)
do
if [ "$countC" -gt 0 ]; then
if [ "$countC" -lt "$countS" ]; then
FILENAME="/var/lib/tomcat7/webapps/ROOT/DataMining/target/"$LINEC
count=0
countW=0
while read LINE
do
for word in $LINE;
do
echo "INSERT INTO data_mining.data (word, line, numWordLine, file) VALUES ('$word', '$count', '$countW', '$FILENAME');" >> /var/lib/tomcat7/webapps/ROOT/DataMining/query
mysql -u root -password< /var/lib/tomcat7/webapps/ROOT/DataMining/query
echo > /var/lib/tomcat7/webapps/ROOT/DataMining/query
let countW++
done
countW=0
let count++
done < $FILENAME
count=0
rm -f /var/lib/tomcat7/webapps/ROOT/DataMining/query
rm -f /var/lib/tomcat7/webapps/ROOT/DataMining/$config
fi
fi
let countC++
done < /var/lib/tomcat7/webapps/ROOT/DataMining/$config #finish while