このサイトとLinuxは初めてです。
新しい端末を新しい名前で開き、スクリプトが実行されていた場所から古い端末を閉じる簡単なスクリプトを作成しようとしています。
私が遭遇する問題は、プロセス番号が変化していることです。したがって、プロセスを開始してecho $$
と入力すると、10602が表示されます。プロセスの終了後、新しいターミナルがロードされた場合、プロセス番号は10594に変更されます。
現時点では、このコードを使用します。
echo -n "Type new terminal name > " # displays messagebox
read text # load messagebox input
echo "$text" > /etc/terminalname # write messagebox input to file
gnome-terminal # open terminal with new name
kill -9 $PPID # this will kill the old terminal
exit # exit script
これらのコマンドをスクリプトで実行していると仮定します。
$$
は実行中 bashプロセスのpidであることに注意してください。スクリプトを実行している場合、そのスクリプトのbashプロセスは現在のインタラクティブシェルの子です。スクリプトで$$
を強制終了すると、親シェルではなくスクリプトを強制終了します。
Bashは親pidを$PPID
変数に格納するため、
#!/bin/bash
gnome-terminal & # launch a new terminal
kill $PPID # kill this script's parent
親シェルはターミナルから生成されたものであり、シェルの終了時に閉じるというターミナルのデフォルトの動作を変更していないと想定しています。
余談ですが、
echo -n "Type new terminal name > " # displays messagebox
read text # load messagebox input
行う
read -p "Type new terminal name > " text
与えられた答えのおかげで、この問題の適切な解決策を見つけました。コマンドkill -9 $var
(varは$ PPID)で簡単に実行できます。
開始ポストから現在使用しているスクリプトまでのコードを編集しました。すべての入力に対するThx。