[INFO + 2Q] Fermeture fenêtre Terminal en fin de shell-script

Le
blanc
Bonjour à tous,

Peut-être le connaissez-vous déjà, mais comme je l'ai perso cherché
plusieurs fois en vain, je pense qu'il peut être utile à plusieurs.

Voici donc le moyen que j'ai trouvé de fermer la fenêtre du Terminal (et
de quitter celui-ci si c'est la seule fenêtre ouverte) en fin
d'exécution d'un shell-script que l'on aurait lancé par un double-clic
(fichier xxx.command).

Bien sûr, il existe la solution de créer à partir du T un fichier
xxx.term (par Fichier --> Enregistrer sous) après avoir coché la case
"fermeture en fin de script" et de modifier ce fichier par éditeur afin
qu'il lance l'exécution du script en question :

<http://groups.google.fr/group/fr.comp.os.mac-os.x/msg/d33c7bca8b0b39c8?
hl=fr&>

Mais cette solution est assez complexe et nécessite d'avoir deux
fichiers (le .term et le .command) pour chaque script, et je voulais
éviter cela.

La solution que je propose consiste à rajouter les lignes suivantes
(appel à Applescript) à la fin du script ou avant un éventuel exit :

osascript -e 'tell application "Terminal"
set nb to count of windows
if nb > 1 then close first window
if nb <= 1 then quit
end tell' &

Supprimez la quatrième ligne (et le test nb>1) si vous ne souhaitez pas
quitter le T.

Deux questions maintenant :

1) Pourquoi ne puis-je pas mettre de else dans le "if-statement",
contrairement à ce qui est indiqué ici :

<http://developer.apple.com/documentation/AppleScript/Conceptual/AppleSc
riptLangGuide/index.html>,

et ceci aussi bien avec osascript que dans l'Editeur de Script ?

2) Dans certaines circonstances, si le T est déjà ouvert, le lancement
par double-clic ne fonctionne pas (et ceci aussi bien avec un .term
qu'un .command). Quelqu'un sait-il pourquoi, et comment y remédier ?

JPaul.

--
/==/==\- Jean-Paul BLANC
/ /--/--//\ quelque-part (somewhere)
|/| L |\ en (in)
/|| = |||\ FRANCE
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Patrick Stadelmann
Le #494894
In article (JPaul) wrote:

1) Pourquoi ne puis-je pas mettre de else dans le "if-statement",
contrairement à ce qui est indiqué ici :


Si tu veux un else il faut écrire :

if ... then
...
else
...
end

Patrick
--
Patrick Stadelmann
blanc
Le #494893
Patrick Stadelmann
Si tu veux un else il faut écrire :

if ... then
...
else
...
end


Avec le script :

tell application "Terminal"
set nb to count of windows
if nb > 1 then close first window
else quit
end
end tell

j'obtiens l'erreur de syntaxe suivante sur le mot "else" :

"end" ou "end tell" prévu mais "else" trouvé.

et c'est pareil si je mets "end if" à la place de "end" comme indiqué
dans la page déjà citée, mais mal citée. Voici la bonne adresse :

<http://developer.apple.com/documentation/AppleScript/Conceptual/AppleSc
riptLangGuide/AppleScript.b5.html>

JPaul.
--
/==/==\- Jean-Paul BLANC
/ /--/--//\ quelque-part (somewhere)
|/| L |\ en (in)
/|| = |||\ FRANCE

blanc
Le #494892
JPaul
Voici la bonne adresse :

<http://developer.apple.com/documentation/AppleScript/Conceptual/AppleSc
riptLangGuide/AppleScript.b5.html>


J'ajouterais que cette page est extraite d'un guide (voir adresse donnée
au premier post) qui se dit à utiliser avec "AppleScript version 1.3.4
or later" et la version annoncée par mon Editeur de Script est 1.10.7.

Alors ?
- 1.10.7 n'est-il pas "later than" 1.3.4 ?
- y a-t-il eu un remaniement profond du langage qui aurait modifié la
syntaxe structurée du "if...then...else" indiquée dans le guide
ci-dessus ? et pour la remplacer par une syntaxe moins structurée ou
dans laquelle le "else" n'est pas possible ?

J'avoue ne pas comprendre.
--
/==/==\- Jean-Paul BLANC
/ /--/--//\ quelque-part (somewhere)
|/| L |\ en (in)
/|| = |||\ FRANCE

blanc
Le #494891
JPaul
Voici la bonne adresse :

<http://developer.apple.com/documentation/AppleScript/Conceptual/AppleSc
riptLangGuide/AppleScript.b5.html>


J'ajouterais que cette page est extraite d'un guide (voir adresse donnée
au premier post) qui se dit à utiliser avec "AppleScript version 1.3.4
or later" et la version annoncée par mon Editeur de Script est 1.10.7.

Alors ?
- 1.10.7 n'est-il pas "later than" 1.3.4 ?
- y a-t-il eu un remaniement profond du langage qui aurait modifié la
syntaxe structurée du "if...then...else" indiquée dans le guide
ci-dessus ? et pour la remplacer par une syntaxe moins structurée ou
dans laquelle le "else" n'est pas possible ?

J'avoue ne pas comprendre.

JPaul.
--
/==/==\- Jean-Paul BLANC
/ /--/--//\ quelque-part (somewhere)
|/| L |\ en (in)
/|| = |||\ FRANCE

Anonyme
Le #494890
JPaul
tell application "Terminal"
set nb to count of windows
if nb > 1 then close first window
else quit
end
end tell


tell application "Terminal"
set nb to count of windows
if nb > 1 then
close first window
else
quit
end
end tell

--
Anonyme ( jayce <@> mosx.net )
********* MosX.net (avec un put§@#* de problème DNS sur le domaine mosx.net)

Patrick Stadelmann
Le #494889
In article (JPaul) wrote:

- 1.10.7 n'est-il pas "later than" 1.3.4 ?


Il l'est.

- y a-t-il eu un remaniement profond du langage qui aurait modifié la
syntaxe structurée du "if...then...else" indiquée dans le guide
ci-dessus ? et pour la remplacer par une syntaxe moins structurée ou
dans laquelle le "else" n'est pas possible ?


Non, voir la réponse de Jayce. La syntaxe :

if (cond) then (statement)

est valide mais ne peut pas être suivie d'un "else".

Patrick
--
Patrick Stadelmann
blanc
Le #494888
Anonyme
tell application "Terminal"
set nb to count of windows
if nb > 1 then
close first window
else
quit
end
end tell


OK. Merci. J'en déduis donc qu'il n'y a pas équivalence entre espace et
saut-ligne comme en C. Ce qui n'était pas évident a priori.

J'ai toujours trouvé que la syntaxe d'AppleScript n'allait pas de soit.
Ca se confirme.

Merci à toi et à Patrick.

Avez-vous une réponse à ma seconde question ?

JPaul.
--
/==/==\- Jean-Paul BLANC
/ /--/--//\ quelque-part (somewhere)
|/| L |\ en (in)
/|| = |||\ FRANCE

Anonyme
Le #494887
JPaul

Avez-vous une réponse à ma seconde question ?


Non, désolé.

--
Anonyme ( jayce <@> mosx.net )
********* MosX.net (avec un put§@#* de problème DNS sur le domaine mosx.net)

francois.jacquemin
Le #494886
JPaul
Bonjour à tous,

Peut-être le connaissez-vous déjà, mais comme je l'ai perso cherché
plusieurs fois en vain, je pense qu'il peut être utile à plusieurs.

Voici donc le moyen que j'ai trouvé de fermer la fenêtre du Terminal (et
de quitter celui-ci si c'est la seule fenêtre ouverte) en fin
d'exécution d'un shell-script que l'on aurait lancé par un double-clic
(fichier xxx.command).



Pourquoi ne pas plutôt faire un script qui n'ouvre pas le Terminal ?


JPaul.



--
F. J.

blanc
Le #494654
François Jacquemin
Pourquoi ne pas plutôt faire un script qui n'ouvre pas le Terminal ?


Heu... oui. C'est exactement la question que j'ai posé ici :
Message-ID:
JPaul.

--
/==/==\- Jean-Paul BLANC
/ /--/--//\ quelque-part (somewhere)
|/| L |\ en (in)
/|| = |||\ FRANCE

Publicité
Poster une réponse
Anonyme