¿Cómo creo un script Bash que abre tmux, ejecuta varias líneas de comandos y luego se desconecta de tmux?

¿Cómo creo un script Bash que abre tmux, ejecuta varias líneas de comandos y luego se desconecta de tmux?

Estoy intentando crear un script Bash que abra tmux y ejecute algunas líneas de comandos y luego lo separe para terminar en mi terminal una vez terminado. ¿Cómo lo soluciono? Lo intenté todo.

≈#!/bin/bash
cd ~/data
mkdir $1

Esto es lo que obtuve hasta ahora. Cuando ejecuto mi script Bash escribo:

myScript folder_name https://myurl.com

Y ahora quiero iniciar una sesión tmux y ejecutar:

screamingfrogseospider  \
--crawl $2  \
--headless  \
--save-crawl  \
--output-folder ~/data/$1  \
--timestamped-output \

Pero, ¿cómo hago un script que abre tmux y ejecuta estas líneas y cierra también ejecuta tmux separado para terminar en la ventana de mi terminal?

Respuesta1

Esto debería funcionar:

#!/bin/bash
sessname="newsess"

cd ~/data
mkdir "$1"

# Create a new session named "$sessname", and run command
tmux new-session -d -s "$sessname"
tmux send-keys -t "$sessname" "screamingfrogseospider --crawl $2 --headless --save-crawl --output-folder ~/data/$1 --timestamped-output" Enter

# Attach to session named "$sessname"
#tmux attach -t "$sessname"

Esto crea una sesión tmux con el nombre establecido en la variable $sessname; también puede usarlo $1como nombre de sesión si lo desea. Luego toma sus 2 argumentos, crea una sesión tmux con el nombre de pila y ejecuta el comando.

Para que el script sea más resistente, debe agregar comprobaciones para ver si ~/data/$1ya existe y no ejecutar el mkdircomando si existe. También puedes comprobar que tiene 2 parámetros con el formato correcto, etc.

De forma predeterminada, no se adjunta a la sesión, por lo que regresa a su shell. Descomente la última línea para adjuntar o ejecútelo manualmente: (reemplace newsess si cambia el valor de $sessname)

tmux attach -t newsess

Por favor, dígame si le funciona.

información relacionada