Bash - 在打开的程序中执行命令

时间:2017-08-16 18:33:30

标签: bash

代码如下所示:

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

最后一个“echo”需要写入“/ connect secure”并点击进入weechat程序内部

你怎么建议我这样做?

1 个答案:

答案 0 :(得分:0)

根据WeeChat user’s guide,创建了一个FIFO,接受命令“如果选项plugins.var.fifo.fifo已启用,则默认为”。

只需获取weechat进程的PID(以便找到FIFO文件):

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

我还建议更改您列出的kill命令;这样做:

  

`kill -9 $ X`

尝试执行一个命令,该命令是kill命令产生的标准输出。你只是试图杀死进程,所以只需运行kill命令:

kill -9 "$X"

或者因为你已经依赖于pgrep,所以只需使用pkill:

pkill -9 "$X"

因为您似乎正在检查pgrep是否发现了PID,只需检查它的返回码:

pgrep weechat >/dev/null && pkill weechat