シェルスクリプトは実行後にプロンプ​​トを放棄しません。

シェルスクリプトは実行後にプロンプ​​トを放棄しません。

ta表示されているすべてのウィンドウで特定のコマンドを実行するように設計されたtmux(すべての人用)を使用するときに呼び出されるコマンドを再作成しようとしています。ただし、この場合、現在のワークスペースに表示されているすべてのシェルが使用中であるため実装されました。これで、ウィンドウマネージャをタイリングします。

これを行うのに必要な欠けている部分を手に入れました。前の質問

コマンドは簡単に機能します。まず、信号をキャプチャします(SIGUSR2この場合はこの質問に関するアドバイスに基づいています)。

次に、コマンドを送信したい場合は、次のようにします。

  • 構成された場所のファイルにコマンドを作成し、ワークスペースの保護規定を確認します。
  • すべてのシェルにシグナルを送信する(この場合はzsh)
  • これにより、シェルが構成されている場所からスクリプトがインポートされます。
  • シェルが現在ワークスペースにある場合にのみ実行されます。

キャプチャコマンド(次に追加~/.bashrc

# Add trap for ta command
export USR2_COMMAND_FILE=$HOME/.ta_executable
export TA_SHELL="zsh"
trap '[[ -r $USR2_COMMAND_FILE ]] && . $USR2_COMMAND_FILE' USR2

スクリプト( ~/dir/in/$PATH/ta):

#!/bin/bash

to_execute="$@"
workspace="$(xdotool get_desktop)"
script="if [[ \"$workspace\" == \"\$(xdotool get_desktop)\" ]]; then $to_execute; fi"
script_location="$USR2_COMMAND_FILE"

echo $script > $script_location

for pid in $(pgrep "$TA_SHELL"); do
    kill -SIGUSR2 $pid
done

問題は、コマンドがすべてのシェルで実行されることです。しかし、その後、プロンプトを放棄するのではなく(それは正しい表現ですか?)、対応するシェルに移動して手動で押す必要があるようです。<enter>いろいろな方法を試してみましたが、何も動作しないようです。

プロンプトを削除するにはどうすればよいですか?

ベストアンサー1

おすすめ記事