Откройте терминал с несколькими вкладками и выполните приложение

Я новичок в сценариях оболочки Linux. Я хочу написать скрипт оболочки, который откроет терминал с несколькими вкладками; он должен запускать клиентское приложение 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

Это работает и открывает окно терминала с вкладками, но вдруг оно закроется. Я не получаю никаких ошибок.

2 ответа

Я придумал свой ответ. Я думаю, что это лучший подход, потому что:

  1. Я могу это понять. Я не эксперт по Bash, и в более популярном ответе не было дано никакого объяснения ..., ${}, -e, или же @
  2. Позволяет легко настроить заголовок и команду для каждой вкладки.
  3. Я говорил, что это намного легче понять?

Обратите внимание, что ; $SHELL в конце каждой команды gnome-терминала есть то, что держит окно терминала открытым. В противном случае это немедленно закрылось бы.

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'" 

Используйте этот вариант скрипта, чтобы делать то, что вы хотите:

#!/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 '<command-line_or_script>';bash"
foo=""

for i in 1 2 ... n; do
      foo+=($tab -e "$cmd")         
done

gnome-terminal "${foo[@]}"

exit 0

откроет новый терминал с n вкладками, выполняющими <command-line_or_script> в каждой вкладке. Это может быть очень полезно, когда вы хотите, например, открыть терминал с несколькими вкладками с интерпретатором по определенному пути (используя cd /path в приведенном выше сценарии).

Также читайте man bash, этот пост и этот пост, чтобы понять изменения.

Я проверил эти сценарии, и они работают.

Другие вопросы по тегам