Read Input From Command Line

0

Tentando usar o "comando de leitura" para aceitar a entrada do usuário a partir do prompt de comando, mas meu script não parece estar avançando

echo "Do you want to continue?(yes/no)"
read -p $1
if [ "$1" == "yes" ]
then
sleep 5s
echo ""
echo " move ahead"
else
    echo ""
    echo "Skipping The Step.."
    echo ""
sleep 5s
fi

Eu quero executar o script assim.

sh script.sh yes
sh script.sh no  

Adicionado um -p ao script acima e tudo parece funcionar muito bem. Este é o meu verdadeiro problema. Eu tenho outro script test.sh que chama script.sh. Então é assim que eu coloco a entrada

cat  test.sh yes
#!/bin/bash
echo "execute the below script"
sh script.sh $1



sh test.sh yes  

Desta forma, não funciona como o script pega um não padrão e avança. Alguma idéia.

    
por Super 20.07.2016 / 07:56

1 resposta

3

$1 , $2 … - argumentos posicionais da linha de comando e não puderam ser atribuídos como read [-p] $1 ou de qualquer outra forma, exceto

set -- firsr_arg second_arg …

Para o seu caso, pode ser testar se os argumentos estão presentes e testá-los

while [ -z "$REPLY" ] ; do
    if [ -z "$1" ] ; then
         read -p "Do you want to continue?(yes/no) "
    else
         REPLY=$1
         set --
    fi
    case $REPLY in
        [Yy]es) sleep 5s
                echo -e "\n move ahead" ;;
         [Nn]o) echo -e "\nSkipping The Step..\n"
                sleep 5s ;;
             *) echo "Wrong answer. Print 'yes' or 'no'" 
                unset REPLY ;;
    esac
done
    
por 20.07.2016 / 08:38