2017-08-16 1 views
1

-Code sieht wie folgt aus:Bash - Befehle ausführen in geöffnet einem Programm

#!/bin/bash 
X=$(pgrep weechat) 
re='^[0-9]+$' 

if [[ $X =~ $re ]] ; then 
    echo "process '$X' killed" 
    `kill -9 $X` 
else 
    echo "no running weechat sessions" 
fi 

weechat 
sleep .1 
echo "/connect secure" 

Der letzte "echo" muss schreiben "secure/connect" und drücken Sie innerhalb des weechat Programm eingeben

Wie Sie empfehlen, dass ich das tue?

+0

gut, hier sind ein paar Beispiele https://weechat.org/scripts/ – FreshPow

Antwort

0

Nach WeeChat user’s guide gibt es einen FIFO erstellt, der Befehle akzeptiert "wenn Option plugins.var.fifo.fifo aktiviert ist, ist es standardmäßig".

einfach die PID des weechat Prozesses greifen (um die FIFO-Datei zu finden):

weechat & 
weechat_pid=$! 
printf '%s\n' "/connect secure" >~/.weechat/weechat_fifo_${weechat_pid} 

ich auch eine Änderung an Ihren kill Befehl würde vorschlagen Reihenfolge von oben; dies zu tun:

`kill -9 X` $

versucht, einen Befehl auszuführen, dass der stdout aus dem Kill-Befehl. Sie versuchen einfach, den Prozess zu töten, so dass nur das Kill-Befehl ausführen:

kill -9 "$X" 

oder da Sie bereits auf pgrep angewiesen, nur pkill verwenden:

pkill -9 "$X" 

und da Sie gerade scheinen es ist Return-Code zu überprüfen, ob pgrep eine PID oder nicht gefunden, nur überprüfen:

pgrep weechat >/dev/null && pkill weechat 
Verwandte Themen