tmux を開いて数行のコマンドを実行し、その後デタッチして、完了後にターミナルに戻る Bash スクリプトを作成しようとしています。どうすれば解決できますか? すべて試しました。
≈#!/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 つのパラメータがあるかどうかなどを確認することもできます。
デフォルトではセッションに接続しないので、シェルに戻ります。接続するには最後の行のコメントを解除するか、手動で実行します: (の値を変更する場合はnewsessを置き換えてください$sessname
)
tmux attach -t newsess
うまくいくかどうか教えてください。