每次迭代时随机化主 shell 脚本中的行

每次迭代时随机化主 shell 脚本中的行

我有一个主脚本master_script.sh,其中有几个脚本。

    Inside Master_script.sh
    
    ./script1.sh
    ./script2.sh
    ./script3.sh
    ..
    ..
    ./script10.sh

我使用 ./Master_Script.sh 从终端执行主脚本。我需要无限次运行 Master_script 并随机化 Master 脚本中的子脚本顺序,以便 Master_script 的每次迭代都会随机化脚本的执行顺序。

Ex
Iteration1
./script1.sh
./script3.sh
./script5.sh
..
..
Iteration2
./script2.sh
./script1.sh
./script9.sh
..
..
etc

任何帮助是极大的赞赏。

答案1

我认为这里的关键是一个名为“shuf”的命令(我今天之前从未听说过)。shuf 接受输入并随机重新排列输出。

我的脚本反复循环。如果您只想运行脚本一次,则可以删除 while 循环。

修改 SCRIPTLIST 以包含您想要运行的所有脚本。

#! /bin/bash

SCRIPTLIST="./script1.sh ./script2.sh ./script3.sh ./script4.sh"

while [ 1 ]
do
        for each in `shuf -e $SCRIPTLIST`
        do
                $each
        done
done

相关内容