首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Bash -在打开的程序中执行命令

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

Stack Overflow用户
提问于 2017-08-17 02:33:30
回答 1查看 80关注 0票数 1

代码如下所示:

代码语言:javascript
复制
#!/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程序内部按enter键

你建议我怎么做?

EN

回答 1

Stack Overflow用户

发布于 2017-08-17 09:34:11

根据WeeChat user’s guide的说法,创建了一个接受命令的先进先出,“如果选项plugins.var.fifo.fifo是启用的,它是默认的”。

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

代码语言:javascript
复制
weechat &
weechat_pid=$!
printf '%s\n' "/connect secure" >~/.weechat/weechat_fifo_${weechat_pid}

我还建议对列出的kill命令进行更改;执行以下操作:

kill -9 $X

尝试执行作为kill命令产生的stdout的命令。您只是想杀死进程,所以只需运行kill命令:

代码语言:javascript
复制
kill -9 "$X"

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

代码语言:javascript
复制
pkill -9 "$X"

由于您似乎只是在检查pgrep是否找到了PID,所以只需检查它的返回代码:

代码语言:javascript
复制
pgrep weechat >/dev/null && pkill weechat
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45720699

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档