我尝试在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提供所需的功能(即用一个参数调用一个应用程序,然后让用户决定何时处理第二个参数(即“按键以继续...”功能) ???)
答案 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
在将第二个参数写入管道之前,脚本将被阻止。