随机播放 BASH 中的随机命令列表?
Shuffle random list of COMMANDS in BASH?
我在名为 commands.txt:
的文本文件中有一个命令列表
cat file1.txt | sort > file1.txt
cat file2.txt | sort > file2.txt
etc
我想做的是随机化该文件,然后以随机顺序执行每一行。我在 cmd.sh shell 脚本中尝试了以下内容:
while read -r -a array
do
"${array[@]}"
done < <(shuf commands.txt)
而 Bash 所做的一切就是对我大喊大叫,这是一个带有意外标记的语法错误 <
这是在 MacOS 10.14 上运行 bash 3.2.57 和 zsh 5.8。
有人知道怎么做吗?
管道 (|
) 和重定向 (>
) 在变量中不起作用。您可以使用 eval "${array[@]}"
或 bash -c "${array[*]}"
。
此外,如果您执行 cat file > file
,file
将在执行 cat
之前被截断(清空)。所以你只有空文件。你可以做 sort file1.txt > tmp && mv tmp file1.txt
您可以将随机化的命令通过管道传输到 bash,无需任何处理:
shuf commands.txt | bash
我在名为 commands.txt:
的文本文件中有一个命令列表cat file1.txt | sort > file1.txt
cat file2.txt | sort > file2.txt
etc
我想做的是随机化该文件,然后以随机顺序执行每一行。我在 cmd.sh shell 脚本中尝试了以下内容:
while read -r -a array
do
"${array[@]}"
done < <(shuf commands.txt)
而 Bash 所做的一切就是对我大喊大叫,这是一个带有意外标记的语法错误 <
这是在 MacOS 10.14 上运行 bash 3.2.57 和 zsh 5.8。
有人知道怎么做吗?
管道 (|
) 和重定向 (>
) 在变量中不起作用。您可以使用 eval "${array[@]}"
或 bash -c "${array[*]}"
。
此外,如果您执行 cat file > file
,file
将在执行 cat
之前被截断(清空)。所以你只有空文件。你可以做 sort file1.txt > tmp && mv tmp file1.txt
您可以将随机化的命令通过管道传输到 bash,无需任何处理:
shuf commands.txt | bash