흐름 제어를 위해 Unix 셸 사용

흐름 제어를 위해 Unix 셸 사용

대학에서 연습을 해야 하는데, 3개의 값을 읽고 중복된 값이 있는지, 어떤 값이 가장 크고 어떤 값이 가장 작은지 판단하는 것에 관한 것인데, 중복된 값을 입력하면 쉘이 메시지를 인쇄하고 계산을 중지해야 하는데 이 부분을 완료할 수 없습니다.

코드는 다음과 같습니다.

#!/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

이제 A=3 B=5 C=3과 같은 중복 코드를 입력하면

코드는 계산을 수행하고 중복 값이 ​​있음을 인쇄합니다. 중복 값을 도입했다는 메시지를 표시하고 싶습니다.

이 작업을 어떻게 수행할 수 있나요?

당신의 도움을 주셔서 감사합니다.

답변1

exit다음과 같은 적절한 장소에서 이 작업을 수행할 수 있습니다 .

# 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

숫자 종료 상태로 종료할 수도 있습니다(예: ) exit 2. 당신은 또한 볼 수 있습니다http://tldp.org/LDP/abs/html/exitcodes.html그리고http://tldp.org/LDP/abs/html/exit-status.html

답변2

당신은 이것을 할 수 있습니다.

#!/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

A와 B를 동일하게 입력하는 경우에는 C를 입력할 필요가 없습니다. 그리고 그것들을 비교하려면 "||"가 아닌 "&&"가 필요할 것입니다.

관련 정보