阿尔弗雷德脚本,“正在等待按键...”

时间:2018-07-19 09:53:39

标签: bash suspend alfred

我尝试在alfred中编写一个/ bin / bash脚本,该脚本应在某一点暂停-并在用户按下键盘键(或其他快捷键)时继续。

我尝试了以下bash-cmd(请参见下文)来启动一个进程,然后在第二行尝试挂起相同的进程。但是,不幸的是,脚本只是继续运行而没有暂停!

/usr/local/bin/myProcessName $arg0

pkill -STOP -nf '/?(bash|sh)[ ]+(.*/)?'"myProcessName"'( |$)'

/usr/local/bin/myProcessName $arg1

这里的想法是给alfred另一个快捷方式脚本,该脚本再次恢复相同的过程,例如:

pkill -CONT -nf '/?(bash|sh)[ ]+(.*/)?'"myProcessName"'( |$)'

但是,再次暂停并没有成功!

我还尝试提供进程名称的完整路径,例如: (但没有区别-脚本中没有暂停!)

/usr/local/bin/myProcessName $arg0

pkill -STOP -nf '/?(bash|sh)[ ]+(.*/)?'"/usr/local/bin/myProcessName"'( |$)'

/usr/local/bin/myProcessName $arg1

我还能如何给alfred提供所需的功能(即用一个参数调用一个应用程序,然后让用户决定何时处理第二个参数(即“按键以继续...”功能) ???)

1 个答案:

答案 0 :(得分:1)

我不确定这是否是您要使用的,但是如果您尝试传递两个参数(一个延迟后传递),如何使用命名管道?

如果您创建命名管道

mknod /tmp/foo.pipe p

并使用这样的脚本,将其命名为stop.sh

#!/bin/bash

arg1=$1
arg2=$(cat <foo.pipe)

echo $arg1 $arg2

你可以跑步

bash stop.sh foo

然后将另一个外壳程序或进程中的第二个参数写入管道

echo bar >>/tmp/foo.pipe

在将第二个参数写入管道之前,脚本将被阻止。