我想在一行上运行两个步骤:
twinkle -c
然后
call sip:[email protected]
这是输出:
我想在一行上执行这两个步骤,我尝试了 and and andtwinkle -c && call sip:[email protected]
twinkle -c call sip:[email protected]
twinkle -c ; call sip:[email protected]
twinkle -c --immediate --call sip:[email protected]
但他们都给出了这样的回应:
有什么办法可以让他们在同一条线上吗?
编辑:第二个命令是在 bash 而不是 Twinkle 中执行的:
编辑我尝试了它工作一秒钟然后自行关闭(关闭闪烁并返回到bash)。它应该在通话期间保持闪烁状态。
printf %s\\n 'call sip:[email protected]' |twinkle -c
答案1
您只有几种方法可以做到这一点:
twinkle -c && call sip:[email protected]
使用此选项,当第一个命令无错误结束时执行第二个命令。在其他情况下,第二个永远不会执行。
twinkle -c ; call sip:[email protected]
在这种情况下,无论第一个命令是否有错误结束,第二个命令都会在第一个命令之后执行。
更新:我相信您正在寻找这样的东西:
twinkle -c --immediate --call sip:[email protected]
从twinkle
手册页:
--call <address> Instruct Twinkle to call the address. When Twinkle is already running, this will instruct the running process to call the address. The address may be a full or partial SIP URI. A partial SIP URI will be completed with the information from the user profile. A subject may be passed by appending '`?subject=<subject>`' to the address. Examples: `twinkle --call 123456 twinkle --call sip:[email protected]?subject=hello` --immediate This option can be used in conjunction with `--call` or `--cmd` It indicates the the command or call is to be performed immediately without asking the user for any confirmation.
答案2
我猜twinkle
是接受标准输入并执行命令。所以...
printf %s\\n 'call sip:[email protected]' | cat - /dev/tty |twinkle -c
...应该希望能够做到。相反,如果twinkle
是那些明确读取的内容之一/dev/tty
,您可能可以这样做......
printf %s\\n 'call sip:[email protected]' | cat - /dev/tty |
luit -- twinkle -c
...或者使用“也许”script
或screen
“代替” luit
。
由于前一种方法显然适合您,因此以下 shell 函数可能会使在命令行运行更加简单。不过,您应该注意,这个答案中的两种方法都是黑客 - 我最初写了这个,然后在编辑另一个答案以包含--call
.几个小时后,当对另一个的评论表明它不起作用时,我才取消删除它,我认为这可能会有帮助。但如果是我,我会尝试找出答案为什么另一个答案不起作用。
尽管如此,shell 函数:
twinksip() while [ -n "$1" ]
do printf 'call sip:%s\n' "$1" |
cat - /dev/tty | twinkle -c || return
shift;done
...它将call sip:
在其所有参数前面添加前缀并在twinkle
的标准输入中打印它们。它将按照您提供的参数顺序处理,正如我猜测的那样,这将连续执行许多调用 - 当最后一个调用结束时开始下一个调用。
您可以从提示中调用它,例如:
twinksip [email protected]