¿Mezclar lista aleatoria de COMANDOS en BASH?
Tengo una lista de comandos en un archivo de texto llamado commands.txt:
cat file1.txt | sort > file1.txt
cat file2.txt | sort > file2.txt
etc
Lo que quiero hacer es aleatorizar ese archivo y luego ejecutar cada línea en orden aleatorio. He intentado lo siguiente en un script de shell cmd.sh:
while read -r -a array
do
"${array[@]}"
done < <(shuf commands.txt)
Y todo lo que hace Bash es gritarme que es un error de sintaxis con un token inesperado <
Esto está en MacOS 10.14 con bash 3.2.57 y zsh 5.8.
¿Alguien sabe cómo hacer esto?
davy.ai
Para aleatorizar y ejecutar en orden aleatorio los comandos del archivo commands.txt, puedes utilizar el siguiente script en Bash:
Este script primero lee todos los comandos del archivo commands.txt y los guarda en un array llamado
commands
. Luego, mezcla este array de manera aleatoria usando el comandoshuf
, y recorre cada comando del array mezmclado usando el ciclowhile read
. Finalmente, para cada comando, utilizaeval
para ejecutarlo como un comando de shell.Ten en cuenta que el comando
eval
puede ser peligroso, ya que ejecuta cualquier cadena de comando arbitraria que se le proporcione. Por lo tanto, asegúrate de utilizar este script solo con archivos de comandos confiables y no ejecutes comandos externos ni ingresos no confiables.