#1 Le 12/10/2015, à 07: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, à 11: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, à 10: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, à 11: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.
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, à 11: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, à 11: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, à 12: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, à 14: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