Je suis nouveau dans les scripts de shell Linux. Je veux écrire un script Shell qui ouvrira un terminal avec plusieurs onglets; il devrait exécuter l'application cliente rtsp dans chaque onglet.
Pour cela, je suis passé par la question ici dans ce forum et a essayé de coder comme ci-dessous,
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
Ceci est en cours d'exécution et ouvre la fenêtre du terminal avec des onglets, mais soudain, il va se fermer. Je ne reçois aucune erreur.
Utilisez cette variante du script pour faire ce que vous voulez:
#!/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
Généralement, un script comme celui-ci:
#!/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
ouvrira un nouveau terminal avec n onglets exécutant le <command-line_or_script>
dans chaque onglet. Cela peut être très utile lorsque vous voulez par exemple ouvrir un terminal avec des onglets avec l'interpréteur sur un chemin spécifique (en utilisant cd /path
dans le script ci-dessus).
Lisez aussi man bash
, this post et this post pour comprendre les modifications.
J'ai testé ces scripts et ils fonctionnent.
Je suis venu avec ma propre réponse. Je pense que c'est une meilleure approche parce que:
...
, ${}
, -e
ou @
Notez que le ; $Shell
à la fin de chaque commande gnome-terminal est ce qui maintient la fenêtre du terminal ouverte. Sinon, il se fermerait immédiatement.
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'"