当有人向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/

10-16 10:33