Uma rápida reescrita com uma sintaxe mais convencional:
if grep -q "dicounter_${string1}_from_${string2}" MasterFile.txt; then
echo "dicounter_${string1}_from_${string2} already exists in the MasterFile. Would you like to proceed?"
read string3
if [[ "${string3^}" == 'Y' ]]; then
screen -S trans -L /dev/ttyACM0
screen -S trans -X stuff 's'$(echo -ne '5')
sleep 8s
screen -S trans -X quit
else
exit 0
fi
else
#opening screen & begin analysis
screen -S trans -L /dev/ttyACM0
screen -S trans -X stuff 's'$(echo -ne '5')
sleep 8s
screen -S trans -X quit
fi
Você não parece ter nenhuma função declarada aqui, então return
não é válido para este caso de uso. Presumi que uma resposta não afirmativa à sua pergunta solicitada deveria abortar todo o script, daí o uso de exit
.
A construção ${variable^}
forçará o primeiro caractere de $variable
, se for uma letra, a maiúscula, o que simplifica a verificação de resposta.