Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 12/10/2015, à 08:20

Blek85

[Résolu] Tester si la fenêtre Terminal sera fermée en fin d'exécution

Bonjour,

Pour certains de mes scripts Bash, j'utilise l'un ou l'autre de ces deux modes d'exécution :
1. Dans une fenêtre déjà ouverte de terminal.
     Je peux lire les messages générés par le script car la fenêtre restera ouverte.
2. Via un lanceur, avec option "Exécuter dans un terminal".
   Je dois mettre en fin de script cette commande :

read -p "[Entrée] pour fermer"

   pour que la fenêtre Terminal reste ouverte afin de consulter les messages générés.

Comment détecter, dans le script, si c'est le mode 1 ou le mode 2 qui est employé
afin de valider, ou pas, la commande read -p "[Entrée] pour fermer"

Pour info, j'utilise GNU bash, version 4.3.11(1)-release-(x86_64-pc-linux-gnu)

Merci pour votre aide

Dernière modification par Blek85 (Le 12/10/2015, à 12:20)


CM MSI B75A-G43 (MS-7758) / Intel G2030 3 GHz / 4 Go Kingston DDR3 1333 MHz / NVIDIA GT620 / 2 HD 500 Go
Macros et API Apache OpenOffice 4.1.2 sous Xubuntu Voyager 14.04.04

Hors ligne

#2 Le 12/10/2015, à 11:57

Postmortem

Re : [Résolu] Tester si la fenêtre Terminal sera fermée en fin d'exécution

Salut,

Si tu lances ton script depuis un terminal déjà ouvert, le process père sera bash (ou le shell que tu utilises).
Si tu lances ton script depuis l'interface graphique en faisant "Lancer dans un terminal", le process père sera le terminal.

J'ai testé avec ce script et ça fonctionne bien pour moi, j'ai le message "Appuyer sur une touche" seulement lorsque je double-clic sur le script et que je fais "Lancer dans un terminal" :

#!/bin/bash

ps -fp $$

Process_pere=$(ps -hp $$ -o ppid)

echo "Process père : $Process_pere"
ps -fp $Process_pere | grep -q gnome-terminal && read -p 'Appuyer sur une touche'

C'est bien sûr à adapter avec le terminal que tu utilises.


Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#3 Le 12/10/2015, à 12:19

Blek85

Re : [Résolu] Tester si la fenêtre Terminal sera fermée en fin d'exécution

Bonjour,
et merci Postmortem

J'ai juste, comme tu l'as suggéré, remplacé dans mon essai gnome-terminal par xfce4-terminal
et ça fonctionne nickel-chrome. Pile-poil ce qu'il me fallait. smile

Je vais donc pouvoir passer certains scripts en appel direct via un sous-menu de Whisker
ou une liste de lanceurs via le tableau de bord.

Encore merci et bravo !

Dernière modification par Blek85 (Le 12/10/2015, à 12:24)


CM MSI B75A-G43 (MS-7758) / Intel G2030 3 GHz / 4 Go Kingston DDR3 1333 MHz / NVIDIA GT620 / 2 HD 500 Go
Macros et API Apache OpenOffice 4.1.2 sous Xubuntu Voyager 14.04.04

Hors ligne

#4 Le 12/10/2015, à 12:35

credenhill

Re : [Résolu] Tester si la fenêtre Terminal sera fermée en fin d'exécution

hello
depuis un laucher, est-ce que tty retourne autre chose que 0 ? ca peut être un test
depuis un terminal :

$ tty -s; echo $?
0

Hors ligne

#5 Le 12/10/2015, à 13:08

Postmortem

Re : [Résolu] Tester si la fenêtre Terminal sera fermée en fin d'exécution

Salut credenhill,

Dans le cas présent, on exécute en faisant "Exécuter dans un terminal", du coup on est bien dans un terminal et le code retour de "tty -s" est 0.

Par contre, si on exécute depuis l'interface graphique sans sélectionner "Exécuter dans un terminal", on a bien un code retour différent de 0.

Je note cette commande "tty" dans un coin, ça peut servir, merci !


Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#6 Le 12/10/2015, à 15:56

credenhill

Re : [Résolu] Tester si la fenêtre Terminal sera fermée en fin d'exécution

dans un job at ou cron, tty -s  retourne 1

Hors ligne