如何製作一個開啟 tmux、執行多行命令、然後從 tmux 分離的 Bash 腳本?

如何製作一個開啟 tmux、執行多行命令、然後從 tmux 分離的 Bash 腳本?

我正在嘗試製作一個 Bash 腳本,該腳本打開 tmux 並運行幾行命令,然後將其分離,以便在完成後我最終進入終端。我該如何解決?嘗試了一切。

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

這是我到目前為止所得到的。運行 Bash 腳本時,我輸入:

myScript folder_name https://myurl.com

現在我想啟動 tmux 會話並運行:

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

但是,如何製作一個腳本來打開 tmux 並運行這些行,並關閉也運行分離的 tmux,以便我最終進入終端機視窗?

答案1

這應該有效:

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

這將創建一個 tmux 會話,其名稱設置在變數中$sessname- 如果您願意,您也可以將其用作$1會話名稱。然後它接受您的 2 個參數,使用給定名稱建立 tmux 會話並執行命令。

為了使腳本更具彈性,您應該添加檢查以查看是否已存在,如果存在~/data/$1則不執行該命令。mkdir您也可以檢查它是否有 2 個格式正確的參數等。

預設情況下,它不會附加到會話,因此您將返回到 shell。取消註解要附加的最後一行,或手動執行它:(如果更改 的值,請取代 newsess $sessname

tmux attach -t newsess

請告訴我它是否適合您。

相關內容