Controle de fluxo usando shell Unix

0

Eu preciso fazer um exercício na universidade, é tudo sobre a leitura de 3 valores e identificar se há algum valor duplicado, qual valor é o maior e qual é o mínimo, a idéia é se você inserir quaisquer valores duplicados O shell deve imprimir uma mensagem e parar de fazer os cálculos, mas não consigo fazer essa parte.

aqui está o código:

#!/bin/sh
echo " A value "
read A
echo " B value "
read B
echo " C value "
read C

#  Print the input
echo " INPUT "
echo " A = $A "
echo " B = $B "
echo " C = $C "

# search duplicated values
if [[ $A -eq $B ]] || [[ $A -eq $C ]];then
echo " Duplicated values please check "

elif [[ $B -eq $A ]] || [[ $B -eq $C ]];then
echo " Duplicated values please check "

elif [[ $C -eq $A ]] || [[ $C -eq $B ]];then
echo " Duplicated values please check "

fi

# greatest value
if [[ $A -gt $B ]] || [[ $A -gt $C ]];then
echo " A $A +"
elif [[ $B -gt $A ]] || [[ $B -gt $C ]];then
echo " B $B +"
elif [[ $C -gt $A ]] || [[ $C -gt $B ]];then
echo " C $C +"

fi

# less value
if [[ $A -lt $B ]] || [[ $A -lt $C ]];then
echo " A $A -"
elif [[ $B -lt $A ]] || [[ $B -lt $C ]];then
echo " B $B -"
elif [[ $C -lt $A ]] || [[ $C -lt $B ]];then
echo " C $C -"
fi

Agora, se eu inserir um código duplicado, por exemplo A = 3 B = 5 C = 3

o código faz os cálculos e imprime que existem valores duplicados e eu preciso apenas da mensagem informando que introduzi valores duplicados.

Como posso fazer isso?

Obrigado pela sua ajuda.

    
por sandatomo 06.04.2016 / 16:48

2 respostas

0

Você poderia apenas exit no local apropriado, por exemplo:

# search duplicated values
if [[ $A -eq $B ]] || [[ $A -eq $C ]];then
echo " Duplicated values please check "
exit


elif [[ $B -eq $A ]] || [[ $B -eq $C ]];then
echo " Duplicated values please check "
exit

elif [[ $C -eq $A ]] || [[ $C -eq $B ]];then
echo " Duplicated values please check "
exit

fi

Você também pode sair com um status de saída numérico, por exemplo: exit 2 . Veja também link e link

    
por 06.04.2016 / 16:59
0

Você pode fazer assim.

#!/bin/sh
echo "A value"
read A
echo "B value"
read B

#Print the input
echo " A = $A "
echo " B = $B "

#serch duplicated values
if [ $A -eq $B ] ;then
echo "Duplicated values please check "
exit
fi


echo "C value"
read C
echo " C = $C "

if [ $C -eq $A ] || [ $C -eq $B ];then
echo " Duplicated values please check "
exit
fi

# greatest value
if [ $A -gt $B ] && [ $A -gt $C ];then
echo " A $A + "
elif [ $B -gt $A ] && [ $B -gt $C ];then
echo " B $B +"
elif [ $C -gt $A ] && [ $C -gt $B ];then
echo " C $C +"

fi

# less value
if [ $A -lt $B ] && [ $A -lt $C ];then
echo " A $A -"
elif [ $B -lt $A ] && [ $B -lt $C ];then
echo " B $B -"
elif [ $C -lt $A ] && [ $C -lt $B ];then
echo " C $C -"
fi

Quando você imputa os mesmos A e B, não é necessário inserir C. E compare-os, você pode precisar "& &", não o "||".

    
por 08.04.2016 / 10:53

Tags