フロー制御に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を入力する必要はありません。そして、それらを比較するには、「||」ではなく「&&」が必要になります。

関連情報