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

Я новичок в сценариях оболочки 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

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

15
задан 2 July 2013 в 23:02

2 ответа

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

  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'" 
0
ответ дан 2 July 2013 в 23:02

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

#!/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, этот пост и этот пост , чтобы понять изменения.

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

0
ответ дан 2 July 2013 в 23:02

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

Похожие вопросы: