[Bash] Commande read surchargée par du C

Bonsoir,

Je cherchais une manière d’interrompre un script par un “Appuyez sur une touche pour continuer…”.
J’ai trouvé :

Ne fonctionnant pas : -n : illegal option.

Non plus (read: nombre: arg count).
Quand je tape :

J’ai pourtant bien ces options.
Mais :

me renvoient à une fonction C (unistd.h) !?

1.Pourquoi ?
2.Finalement, comment faire mon “Press any key to continue…” ?

En vous remerciant.

read n’est pas un programme indépendant, il fait partie intégrante du shell (ce qu’on appelle un builtin).
La preuve : which read ne retourne rien.
La doc se trouve ici :

read est bien la commande que tu cherches… mais en lui donnant correctement ses options… :016 :whistle: :016

read -s -n1 -p "Press any key to continue... " variabletouche

(il faut coller le 1 au n… :wink: et lui indiquer où stocker la touche lue… ben vi… c’est sa fonction première… :whistle: :016 :wink: )

:006

En effet,which read ne renvoie rien. Et read est bien présente dans man builtins.

J’ai omis de dire que j’avais aussi essayé cette syntaxe (pour l’avoir vue sur un forum mais pas dans le help qui met bien un espace avant le nombre de caractères attendus).
Elle me donne aussi : -n: illegal option ou -s: illegal option, selon l’ordre dans lesquelles je l’ai mets.

De plus, si j’en crois le help, la variable est facultative (j’ai tout de même essayé).

Quand je tape cette commande hors script, cela fonctionne sous toutes les formes.

read read -p "Message." (-n1 -s)

Et pourquoi man read me renvoie-t-il donc une fonction C ?

Edit: j’ai oublié de préciser : Bash v4.1.5.

J’ai intégré la commande que je t’ai indiquée dans un script “minimaliste”… ça marche… le pb ne doit pas être sur cette commande… (un " oublié plus haut, un ; … que sais-je…). Et il FAUT une variable pour stocker la retour… read sert à “lire”… même si tu ne te sers de ce que tu as lu (n’est-ce pas… :think: :whistle: :think: ) il faut le lire quand même…

:006

Désolé, je n’ai pas été clair, j’ai aussi essayé :

  • j’ai essayé hors script, avec ou sans variable, cela fonctionne.
  • j’ai essayé dans le script, avec ou sans variable : cela ne fonctionne pas.

Le script fait plusieurs fois appel à read dans le but d’un débogage. Les seules erreurs que j’ai sont celles de read (n ou s: illegal option).

Shebang :#!/bin/bash

echo $SHELL /bin/bash

ben je vois pas dans ce cas… j’ai refait le test en incluant plusieurs fois le read… et ça marche…
(quand on a une erreur, ce n’est pas forcément là où l’erreur est indiquée qu’il faut regarder… quelque fois, il faut regarder “avant” (bien avant des fois…) genre un " manquant ou en trop… un ; mal placé… )

[code]nums@test$ cat test-press-any-key.sh
#!/bin/bash

echo “toto 1”
read -s -n1 -p "Press any key to continue… " variabletouche
echo “toto 2”
read -s -n1 -p "Press any key to continue… " variabletouche
echo “toto 3”
read -s -n1 -p "Press any key to continue… " variabletouche
echo “toto 4”
read -s -n1 -p "Press any key to continue… " variabletouche
echo “toto 5”
read -s -n1 -p "Press any key to continue… " variabletouche

nums@test$ ./test-press-any-key.sh
toto 1
Press any key to continue… toto 2
Press any key to continue… toto 3
Press any key to continue… toto 4
Press any key to continue… toto 5
Press any key to continue… [/code] :think: :unamused: :think:

:006

Euuuh, j’ai réessayé et… ça marche. Dans le script, uniquement avec une variable comme tu l’avais dit Num’s. :blush:

Je n’ai fait que changer la fin du message car j’avais lu quelque part que le message devait se terminer par une ponctuation et/ou un espace. J’ai mis ": " à la place de "… " et c’était bon puis remis "… ", bon aussi. Mais sans ponctuation aussi, cela fonctionne. J’ai écrit le script sur deux machines (Debian) avec Gedit. Bref, 'comprends pas.

Désolé pour ce contretemps, je suis confus.

Finalement :read -p "Message" var

Peut-on mettre Résolu sur un faux problème ? :confused:

Oui pas de souci.
Coche verte :wink: