Me gustaría detener un script de shell para pedir al usuario que elija un valor de entre varias opciones. En concreto estoy pensando en la típica pregunta de Yes, No o Cancel. ¿Cómo se puede hacer esto?
Estás leyendo una traducción autorizada de la pregunta
How do I prompt for input in a Linux shell script?
planteada por Myrddin Emrys
en StackOverflow.
Respuestas
Lo mejor en este caso sería utilizar el comando select
de Bash:
echo "¿Quieres instalar el programa?" select yn in "Yes" "No"; do case $yn in Yes ) make install; break;; No ) exit;; esac done
La ventaja de select
respecto al método tradicional es que no hace falta sanitizar la respuesta del usuario, ya que sólo deja elegir una de las opciones planteadas.
A modo de referencia y comparativa, este sería el método tradicional de hacer esto en un script de Bash sin utilizar el comando select
:
while true; do read -p "¿Quieres instalar el programa?" yn case $yn in [Yy]* ) make install; break;; [Nn]* ) exit;; * ) echo "Por favor, elige 'si' o 'no'.";; esac done
@librosweb
7 octubre 2014, 22:42