echo -n "Enter [y/n] : " ; read opt
OU! (Plus tard c'est mieux)
read -p "[y/n]: " opt
Le shebang #!/bin/sh
signifie que vous écrivez du code soit pour le shell Bourne historique (toujours présent sur certains systèmes comme Solaris, je pense), soit plus probablement pour le langage shell standard tel que défini par POSIX. Cela signifie que read -p
et echo -n
sont tous deux peu fiables.
La solution standard/portable est :
printf 'Enter [y/n] : '
read -r opt
(Le -r
empêche le traitement spécial de \
, depuis read
accepte normalement cela comme une continuation de ligne quand c'est à la fin d'une ligne.)
Si vous savez que votre script sera exécuté sur des systèmes dotés de Bash, vous pouvez changer le shebang en #!/bin/bash
(ou #!/usr/bin/env bash
) et utilisez toutes les fonctionnalités sophistiquées de Bash. (De nombreux systèmes ont /bin/sh
lié symboliquement à bash
donc ça marche dans les deux sens, mais s'y fier est une mauvaise pratique, et bash
désactive en fait certaines de ses propres fonctionnalités lorsqu'il est exécuté sous le nom sh
.)
Solution :read -p "Enter [y/n] : " opt
À partir de help read
:
-p prompt output the string PROMPT without a trailing newline before
attempting to read