shell脚本导出文件

shell脚本导出文件

我有需要导出到文件的输出。然后我需要调用这个文件来运行其中的脚本。另一个条件是 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)。

之后,您所要做的就是按照您想要的方式调用这些脚本。例如,如果我采用mysqlBenjamin 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

相关内容