echo -n "Enter [y/n] : " ; read opt
¡O! (Más tarde es mejor)
read -p "[y/n]: " opt
El shebang #!/bin/sh
significa que está escribiendo código para el shell Bourne histórico (creo que todavía se encuentra en algunos sistemas como Solaris), o más probablemente, el lenguaje de shell estándar definido por POSIX. Esto significa que read -p
y echo -n
ambos no son confiables.
La solución estándar/portátil es:
printf 'Enter [y/n] : '
read -r opt
(El -r
impide el tratamiento especial de \
, desde read
normalmente lo acepta como una continuación de línea cuando está al final de una línea).
Si sabe que su secuencia de comandos se ejecutará en sistemas que tienen Bash, puede cambiar el shebang a #!/bin/bash
(o #!/usr/bin/env bash
) y use todas las características sofisticadas de Bash. (Muchos sistemas tienen /bin/sh
vinculado a bash
así que funciona de cualquier manera, pero confiar en eso es una mala práctica, y bash
en realidad desactiva algunas de sus propias funciones cuando se ejecuta con el nombre sh
.)
Solución:read -p "Enter [y/n] : " opt
Desde help read
:
-p prompt output the string PROMPT without a trailing newline before
attempting to read