首页 > 解决方案 > 如何使用 bash/sed 循环数字并延迟启动多个程序

问题描述

我想通过 bash/sed 完成以下任务:

#1。设置 i = 1 和 j = 34

#2。使用 sed 修改我的脚本 (myscript.txt) 使用步骤 #1 中的 i 和 j 的值

#3。运行一个使用 myscript.txt 的程序

#4。再次使用 sed 将 myscript.txt 更改为其原始值

#5。等待 5 秒

#6。将 i 和 j 增加 34 并重复步骤 #2、#3、#4 和 #5。

到目前为止,我得到的是代码只启动程序一次。有什么建议么?

j = 1
for i in {1..1021..34}; do
    echo "Number: $i"
    j=$(($i+33))
    echo "Number: $j"
    cd "/path_to_my_script/"
    sed -i "s/local min = 123456789/local min = ${i}/g" myscript.txt  &&
    sed -i "s/local max = 123456789/local max = ${j}/g" myscript.txt  &&
    run program using myscript.txt  && sleep 5s &&
    sed -i "s/local min = ${i}/local min = 123456789/g" myscript.txt   &&
    sed -i "s/local max = ${j}/local max = 123456789/g" myscript.txt 
done

标签: bashunixsed

解决方案


基于 StackOverflow 社区提供的大力帮助,我已经能够解决问题。最终脚本可以表示为:

cd "/path_to_my_script/"
j = 1
for i in {1..1021..34}; do
    echo "Number: $i"
    j=$(($i+33))
    echo "Number: $j"
    sed -e "s/local min = 123456789/local min = ${i}/g" original_script.txt > script_to_run.txt 
    sed -i "s/local max = 123456789/local max = ${j}/g" script_to_run.txt 
    run program using script_to_run.txt  & sleep 5s
   done

问题的根源:我正在使用几天前过期的程序的试用版。要使用它,我必须使用 faketime。购买完整版后,无需使用 faketime,代码运行良好。此外,代码已经更改,因为我想要 Bodo 如下所述:“在后台启动程序,无需等待,同时休眠 5 秒”


推荐阅读