当有人向sqlite数据库添加文件名和dir时,我会填充一个sqlite数据库,然后我希望脚本读取最新的3个条目(使用“limit 3”完成),然后我希望脚本获取这3个条目,并为每个条目启动“script1.sh”,然后在script1完成3个条目中的一个之后,我想让它回顾sqlite数据库,检查是否有任何新的实体并重复。(有点像排队)
注意,在script1.sh的末尾有一个命令将从sqlite数据库中删除它的条目。
所以基本上我希望脚本在每次一个script1.sh脚本完成时检查sqlite数据库。
到目前为止我有:
#!/bin/bash
sqlite3 /database.db "SELECT * FROM main ORDER BY mKey ASC LIMIT 3" | while read file
do
fileName=`echo "$file" | awk '{split($0,a,"|"); print a[2]}'`
echo "$fileName"
#Run script
./script1.sh "$fileName" "$file"
done
最佳答案
#!/bin/bash
key=0
while :; do
sqlite3 -column ./test.db \
"SELECT * FROM main WHERE mKey > $key ORDER BY mKey ASC LIMIT 3" > tmpFile
lastKey=$key
while read k f; do
key=$k
echo start script1 on $f here current key is $k
done < tmpFile
[ $key -eq $lastKey ] && sleep 1
done
我不确定你是否真的想要最新的3号,因为你还说你想要排队,所以我每次都会得到下3号,从第一个开始。
关于linux - 当查询发现前3个运行脚本时,连续循环SQlite3数据库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1482603/