Page 1 sur 1

laisser le terminal ouvert après avoir exécuter un script!

Posté : dim. 19 janv. 2020 20:13
par GISALE
Bonjour

Je suis débutant en Linux et encore plus en script.
J'ai cherché un peu sur le net et j'ai trouvé quelques pistes mais rien!

Voilà j'ai le script suivant :

Code : Tout sélectionner

read -p 'Quel est le nom de votre clé USB ou disque dur externe ?' nom
echo 'votre périphérique de stockage s appelle $nom'

ce script est dans un fichier qui se nomme nom.sh

Je clique sur nom.sh et sur Lancer dans un terminal
J'ai bien la question qui s'affiche, je tape la réponse
puis le terminal se ferme sans rien afficher alors qu'il devrait m'afficher la ligne echo et le terminal devrait rester ouvert jusqu'à temps que je le ferme, non?

Ce que je veux c'est répondre à la question, et afficher la réponse et que le terminal ne se ferme pas immédiatement!

Merci d'avance pour vos réponses et Bonne année 2020 à vous tous!

Re: laisser le terminal ouvert après avoir exécuter un script!

Posté : dim. 19 janv. 2020 20:36
par arghlub
Salut,

N'étant pas avec l'environnement Mate, je n'ai pas la possibilité de lancer des scripts bash via le gestionnaire de fichiers donc je ne saurais te répondre.

Par contre, il y a une erreur dans ton script dans la ligne du "echo".
Il faut mettre des guillemets doubles pour que la variable "nom" soit affichée correctement.
En effet, si tu utilises cette ligne :

Code : Tout sélectionner

echo 'votre périphérique de stockage s appelle $nom'
le terminal te retournera :

Code : Tout sélectionner

votre périphérique de stockage s appelle $nom
La variable ne sera pas prise en compte et sa valeur ne sera pas affichée si tu mets des guillemets simples.

Il faut donc mettre des guillemets doubles, comme ceci :

Code : Tout sélectionner

#!/bin/bash
read -p 'Quel est le nom de votre clé USB ou disque dur externe ? ' nom
echo "votre périphérique de stockage s'appelle $nom"
Pour lancer ton script le mieux serait que tu le lances directement depuis le terminal.
Donc tu ouvres un terminal dans le répertoire où est situé le script et tu lances ton script avec :

Code : Tout sélectionner

./Nom_du_Script.sh
;)

Re: laisser le terminal ouvert après avoir exécuter un script!

Posté : dim. 19 janv. 2020 20:46
par GISALE
Merci argh
J'ai corrigé l'erreur de echo.
En effet on peut lancer le script de puis le terminal, mais j'aimerais le lancer en cliquant dessus, et à chaque fois le terminal se ferme automatiquement!
N'y aurait-il pas une commande qu'il le mette en pause pendant une certaine durée, puis passé cette durée, le script continue?

Re: laisser le terminal ouvert après avoir exécuter un script!

Posté : dim. 19 janv. 2020 20:53
par arghlub
GISALE a écrit : dim. 19 janv. 2020 20:46 N'y aurait-il pas une commande qu'il le mette en pause pendant une certaine durée, puis passé cette durée, le script continue?
Si j'ai bien compris :?
Utilise dans ton script la commande "sleep nombre_de_secondes".
Par exemple, si dans ton script tu mets la ligne :

Code : Tout sélectionner

sleep 3
Le script se mettra en pause pendant 3 secondes quand il arrivera à cette ligne et poursuivra une fois les 3 secondes passées.

Re: laisser le terminal ouvert après avoir exécuter un script!

Posté : dim. 19 janv. 2020 21:05
par GISALE
Tu as bien compris ce que je veux, mais la commande sleep ne fonctionne pas, ni la commande read a que j'ai trouvé en fouinant!

réflexion :
Peut on ouvrir un terminal depuis un script et lancer le script et que le terminal s'affiche comme d'habitude avec la ligne
type gisale@gisale:~$ ?

Re: laisser le terminal ouvert après avoir exécuter un script!

Posté : dim. 19 janv. 2020 21:24
par arghlub
GISALE a écrit : dim. 19 janv. 2020 21:05 Tu as bien compris ce que je veux, mais la commande sleep ne fonctionne pas, ni la commande read a que j'ai trouvé en fouinant!
les commandes sleep et read fonctionnent parfaitement, tu dois faire une erreur quelque part.
Capture faite sur une machine virtuelle avec LinuxMint19 Mate :
Image
(certes sur ma capture on ne peut pas voir que le sleep marche mais je peux te certifier qu'il fait bien une pause de 3 secondes entre les 2 commandes)

──────────────────────────────
GISALE a écrit : dim. 19 janv. 2020 21:05 réflexion :
Peut on ouvrir un terminal depuis un script et lancer le script et que le terminal s'affiche comme d'habitude avec la ligne
type gisale@gisale:~$ ?
Là je ne suis pas sûr de bien saisir ce que tu veux faire ...
Mais si tu veux lancer un terminal à partir d'un script (je ne comprends pas trop l'intérêt :?), tu ajoutes cette ligne dans ton script :

Code : Tout sélectionner

mate-terminal

Re: laisser le terminal ouvert après avoir exécuter un script!

Posté : dim. 19 janv. 2020 22:53
par GISALE
Merci pour ton aide argh

Oui après plusieurs essais, sleep fonctionne bien!

mate-terminal fonctionne bien mais ne répond pas à ma demande mais vu que sleep fonctionne c'est bon!

Re: laisser le terminal ouvert après avoir exécuter un script!

Posté : lun. 20 janv. 2020 08:10
par tescan
Bonjour,
juste pour mon érudition personnelle ;) ,
si on lance depuis un terminal ouvert, quelle est l'utilité du sleep? Ca retarde la réponse, mais pourquoi faire, le terminal reste ouvert de toute façon.

Si on lance en clickant sur le script, si on veut retarder la fermeture du terminal, donc voir la réponse, le sleep doit se trouver à la fin, non?

"read" à la fin du script fonctionne aussi, on attend une entrée clavier pour fermer le terminal.

Re: laisser le terminal ouvert après avoir exécuter un script!

Posté : lun. 20 janv. 2020 13:34
par GISALE
Réponse pour tescan

Étant un débutant dans le script, je ne suis pas sûr de ma réponse mais pour moi

si tu lance le script depuis un terminal, bien-sûr que ce dernier restera ouvert, et tu pourras entrer d'autres commandes à la fin de ton script ;

Mais si tu lances le script en cliquant sur le fichier script, ce terminal n'affiche pas le prompt la ligne type gisale@gisale:~$, et par conséquent tuas besoin d'une commande type sleep ou read pour laisser le terminal ouvert afin que les utilisateurs puissent lire les messages affichés grâce aux commande echo.

Merci de corriger si j'ai tort!