Résolu le 19-01-20 laisser le terminal ouvert après avoir exécuter un script!

Questions concernant les lignes de commandes
Répondre
GISALE
Messages : 82
Enregistré le : ven. 1 févr. 2019 18:57

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

Message 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!
Modifié en dernier par GISALE le dim. 19 janv. 2020 22:54, modifié 1 fois.
Lenovo IdeaPad Z500
LM 20.3 Una Mate
Processeur : Intel Core i7 3520M 2.9Ghz
RAM : 6Go

Avatar du membre
arghlub
Administrateur du site
Messages : 10421
Enregistré le : dim. 21 mai 2017 08:19
Localisation : Provence
Contact :

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

Message 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
;)
Tour1 (custom)CM MSI Z270 M3 | CPU Intel I7-7700K | CG Nvidia GTX 1080 | RAM 16Go | tripleBoot : Debian 11 | MXlinux 21 | LMint 19.3 | XFCE
Tour2 (custom)CM Gigabyte | CPU AMD Athlon 5200+ | CG Nvidia GTX 560 | RAM 6Go | FreeBSD 12.1 XFCE
Portable1 MSI GF75 Thin 9SC | CPU Intel I7-9750H | CG Nvidia GTX 1650 | RAM 32Go | dualBoot : LMint 20.2 | MXlinux 21 | XFCE
Portable2 MacBook Air A1466 (2015) | CPU Intel I5-5250U | CG Intel HD Graphics 6000 | RAM 8Go | dualBoot : macOS Sierra | MXlinux 21 XFCE
─────( pour une informatique libre ! -membre en stand-by de l' April.org────────────────

GISALE
Messages : 82
Enregistré le : ven. 1 févr. 2019 18:57

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

Message 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?
Lenovo IdeaPad Z500
LM 20.3 Una Mate
Processeur : Intel Core i7 3520M 2.9Ghz
RAM : 6Go

Avatar du membre
arghlub
Administrateur du site
Messages : 10421
Enregistré le : dim. 21 mai 2017 08:19
Localisation : Provence
Contact :

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

Message 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.
Tour1 (custom)CM MSI Z270 M3 | CPU Intel I7-7700K | CG Nvidia GTX 1080 | RAM 16Go | tripleBoot : Debian 11 | MXlinux 21 | LMint 19.3 | XFCE
Tour2 (custom)CM Gigabyte | CPU AMD Athlon 5200+ | CG Nvidia GTX 560 | RAM 6Go | FreeBSD 12.1 XFCE
Portable1 MSI GF75 Thin 9SC | CPU Intel I7-9750H | CG Nvidia GTX 1650 | RAM 32Go | dualBoot : LMint 20.2 | MXlinux 21 | XFCE
Portable2 MacBook Air A1466 (2015) | CPU Intel I5-5250U | CG Intel HD Graphics 6000 | RAM 8Go | dualBoot : macOS Sierra | MXlinux 21 XFCE
─────( pour une informatique libre ! -membre en stand-by de l' April.org────────────────

GISALE
Messages : 82
Enregistré le : ven. 1 févr. 2019 18:57

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

Message 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:~$ ?
Lenovo IdeaPad Z500
LM 20.3 Una Mate
Processeur : Intel Core i7 3520M 2.9Ghz
RAM : 6Go

Avatar du membre
arghlub
Administrateur du site
Messages : 10421
Enregistré le : dim. 21 mai 2017 08:19
Localisation : Provence
Contact :

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

Message 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
Tour1 (custom)CM MSI Z270 M3 | CPU Intel I7-7700K | CG Nvidia GTX 1080 | RAM 16Go | tripleBoot : Debian 11 | MXlinux 21 | LMint 19.3 | XFCE
Tour2 (custom)CM Gigabyte | CPU AMD Athlon 5200+ | CG Nvidia GTX 560 | RAM 6Go | FreeBSD 12.1 XFCE
Portable1 MSI GF75 Thin 9SC | CPU Intel I7-9750H | CG Nvidia GTX 1650 | RAM 32Go | dualBoot : LMint 20.2 | MXlinux 21 | XFCE
Portable2 MacBook Air A1466 (2015) | CPU Intel I5-5250U | CG Intel HD Graphics 6000 | RAM 8Go | dualBoot : macOS Sierra | MXlinux 21 XFCE
─────( pour une informatique libre ! -membre en stand-by de l' April.org────────────────

GISALE
Messages : 82
Enregistré le : ven. 1 févr. 2019 18:57

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

Message 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!
Lenovo IdeaPad Z500
LM 20.3 Una Mate
Processeur : Intel Core i7 3520M 2.9Ghz
RAM : 6Go

tescan
Messages : 388
Enregistré le : dim. 2 juil. 2017 08:53
Localisation : Comminges

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

Message 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.
Intel i5-9400F, Nvidia GTX 1660ti, 16Go Ram
Mint 20.3 + Mint 21.1 Cinnamon

GISALE
Messages : 82
Enregistré le : ven. 1 févr. 2019 18:57

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

Message 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!
Lenovo IdeaPad Z500
LM 20.3 Una Mate
Processeur : Intel Core i7 3520M 2.9Ghz
RAM : 6Go

Répondre