Wie erstelle ich ein Bash-Skript, das tmux öffnet, mehrere Befehlszeilen ausführt und sich dann von tmux trennt?

Wie erstelle ich ein Bash-Skript, das tmux öffnet, mehrere Befehlszeilen ausführt und sich dann von tmux trennt?

Ich versuche, ein Bash-Skript zu erstellen, das tmux öffnet und einige Befehlszeilen ausführt und es dann abtrennt, sodass ich nach Abschluss in meinem Terminal lande. Wie löse ich das Problem? Habe alles versucht.

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

Das ist, was ich bisher bekommen habe. Wenn ich mein Bash-Skript ausführe, gebe ich ein:

myScript folder_name https://myurl.com

Und jetzt möchte ich eine Tmux-Sitzung starten und ausführen:

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

Aber wie erstelle ich ein Skript, das tmux öffnet, diese Zeilen ausführt und beim Schließen auch tmux getrennt ausführt, sodass ich in meinem Terminalfenster lande?

Antwort1

Das sollte funktionieren:

#!/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"

Dadurch wird eine Tmux-Sitzung mit dem in der Variablen festgelegten Namen erstellt. Sie können auch als Sitzungsnamen $sessnameverwenden, wenn Sie möchten. Anschließend werden Ihre beiden Argumente verwendet, eine Tmux-Sitzung mit dem angegebenen Namen erstellt und der Befehl ausgeführt.$1

Um das Skript widerstandsfähiger zu machen, sollten Sie Prüfungen hinzufügen, um zu prüfen, ob es ~/data/$1bereits vorhanden ist, und den mkdirBefehl in diesem Fall nicht ausführen. Sie können auch prüfen, ob es 2 Parameter mit dem richtigen Format usw. hat.

Standardmäßig wird es nicht an die Sitzung angehängt, sodass Sie zu Ihrer Shell zurückkehren. Entfernen Sie das Kommentarzeichen aus der letzten anzuhängenden Zeile oder führen Sie Folgendes manuell aus: (ersetzen Sie newsess, wenn Sie den Wert von ändern $sessname)

tmux attach -t newsess

Bitte lassen Sie mich wissen, ob es für Sie funktioniert.

verwandte Informationen