打开包含多个选项卡的终端并执行应用

我是linux shell脚本的新手。 我想编写一个shell脚本,它将打开带有多个标签的终端; 它应该在每个选项卡中运行rtsp客户端应用程序。

为此,我在这个论坛中经历了一些问题并尝试编写类似于下面的代码,

tab="--tab-with-profile=Default -e " cmd="java RunRTSPClient" for i in 1 2 3 4 5 do # foo="$foo $tab $cmd" done gnome-terminal $foo exit 0 

这正在运行并打开带有标签的终端窗口,但突然它会关闭。 我没有收到任何错误。

使用此脚本的变体来执行您想要的操作:

 #!/bin/bash tab="--tab-with-profile=Default" cmd="bash -c 'java RunRTSPClient';bash" foo="" for i in 1 2 3 4 5; do foo+=($tab -e "$cmd") done gnome-terminal "${foo[@]}" exit 0 

通常,这样的脚本:

 #!/bin/bash tab="--tab" cmd="bash -c '';bash" foo="" for i in 1 2 ... n; do foo+=($tab -e "$cmd") done gnome-terminal "${foo[@]}" exit 0 

将打开一个新终端,其中n个选项卡在每个选项卡中执行 。 当您希望例如在特定路径上使用解释器打开带有一些选项卡的终端时(在上面的脚本中使用cd /path ,这非常有用。

另外,阅读man bash , 这篇文章和这篇文章来了解这些变化。

我测试过这些脚本并且它们有效。

我想出了自己的答案。 我认为这是一种更好的方法,因为:

  1. 我能理解。 我不是一个bash专家,对于什么是...${} ,- -e@的更流行的答案没有给出解释
  2. 它允许您轻松自定义每个选项卡的标题和命令
  3. 我说它更容易理解吗?

注意; $SHELL 每个gnome-terminal命令末尾的; $SHELL是保持终端窗口打开的原因。 否则会立即关闭。

 title1="tab 1" title2="tab 2" title3="tab 3" cmd1="cd /etc" cmd2="cd ~/Documents" cmd3="cd /usr/local" gnome-terminal --tab --title="$title1" --command="bash -c '$cmd1; $SHELL'" \ --tab --title="$title2" --command="bash -c '$cmd2; $SHELL'" \ --tab --title="$title3" --command="bash -c '$cmd3; $SHELL'"