我有需要导出到文件的输出。然后我需要调用这个文件来运行其中的脚本。另一个条件是 15 分钟后运行最后一个查询或指令。参见下面的代码:
#SORT RESULT IN DESCENDING ORDER.
#FORMAT SYNTAX FOR BACKUP DELETION
sort -r ${TEMPRESULT2} | sed -e "s/^/DELETE BACKUP /g" | sed -e "s/$/ NOWARNING/g"
输出:
DELETE BACKUP (backupid) NOWARNING
DELETE BACKUP (backupid) NOWARNING
[15分钟后暂停然后运行]
DELETE BACKUP (finalbackupid) NOWARNING
最终备份 ID 仅在所有其他备份 ID 完成后才能运行
答案1
您有两个不同的命令序列要在两个不同的时间执行。因此,最合乎逻辑的解决方案是将这些命令放在两个不同的文件中:
TEMPRESULT3=$(sort -r ${TEMPRESULT2} | sed -e "s/^/DELETE BACKUP /g" | sed -e "s/$/ NOWARNING/g")
# Put all lines except the last one in a first script:
echo "$TEMPRESULT3" | head -n -1 >"path/to/first-script"
# Put the last line in a second script:
echo "$TEMPRESULT3" | tail -n 1 >"path/to/second-script"
据我所知,负行号是 GNU 的扩展head
,如果它不可用,则必须在执行它之前计算行数(total=$(echo "$TEMPRESULT3" | wc -l); all_but_least=$(expr $total - 1)
,然后$all_but_least
将 cna 作为参数传递给第一个head
命令而不是-1
)。
之后,您所要做的就是按照您想要的方式调用这些脚本。例如,如果我采用mysql
Benjamin B. 提出的语法,它将是:
mysql < "path/to/first-script"
# 800 s. = 15 m.
sleep 800
mysql < "path/to/second-script"
答案2
您可以将输出写入文件并作为 shell 程序执行,如下所示:
sort -r ${TEMPRESULT2} | sed -e "s/^/DELETE BACKUP /g" | sed -e "s/$/ NOWARNING/g" > file.sh && chmod +x file.sh && sleep 15m && ./file.sh