Falha ao executar o primeiro condicional depois de fazer uma pergunta

0

Estou tentando criar um dos meus primeiros scripts, mas ele não é executado corretamente.

Eu gostaria de git fetch --prune origin dentro do script, mas antes disso, eu gostaria de fazer a pergunta, você gostaria de "continuar" ou "sair". A parte "exit" funciona, mas não a parte "continue".

#!/usr/bin/env bash

echo "Ready to git-some and sync your local branches to the remote counterparts ?"

REPLY= read -r -p 'Continue? (type "c" to continue), or Exit? (type "e" to exit): '

if [[ "${REPLY}" == 'c ' ]]
then
  echo "About to fetch"
  git fetch --prune origin
elif [[ "${REPLY}" == 'e' ]]
then
  echo "Stopping the script"
fi
    
por intercoder 05.09.2018 / 08:24

1 resposta

3

você tem espaço primeiro se a condição 'c ' :

if [[ "${REPLY}" == 'c ' ]]

A condição procura c[space] ou e

Remova-o.

if [[ "${REPLY}" == 'c' ]]

Use a condição else para depurar como abaixo:

if [[ "${REPLY}" == 'c' ]]
then
    echo "About to fetch"
    git fetch --prune origin
elif [[ "${REPLY}" == 'e' ]]
then
    echo "Stopping the script"
else
    echo "${REPLY} is INVALID"
fi

Eu prefiro usar um switch case para esse tipo de cenário:

echo "Ready to git-some and sync your local branches to the remote counterparts ?"

read -r -p 'Continue? (type "c" to continue), or Exit? (type "e" to exit): ' REPLY

case $REPLY in
    [Cc])
        echo "About to fetch"
        git fetch --prune origin
        ;;
    [Ee])
        echo "Stopping the script"
        exit 1;;
    *)
        echo "Invalid input"
        ;;
esac
    
por 05.09.2018 / 08:47