在一行上执行多个命令

在一行上执行多个命令

我想在一行上运行两个步骤:

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

...或者使用“也许”scriptscreen“代替” 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]                     

相关内容