這是我的程式:
#!/bin/bash
read x y z
if [ `$x -eq $y` -o `$z -eq $y` -o `$z -eq $x` ]
then
echo "ISOSCELES"
elif [ `"$x" -eq "$y"` -a `$y -eq $z` -a `$z -eq $x` ]
then
echo "EQUILATERAL"
else
echo "SCALENE"
fi
這是問題:
給定代表三角形三邊的三個整數(X、Y 和 Z),確定三角形是不等邊三角形、等腰三角形還是等邊三角形。
如果所有三個邊都相等,則輸出 EQUILATERAL。否則,如果任意兩條邊相等,則輸出 ISOSCELES。否則,輸出 SCALENE。
我發現了這種錯誤:
沒有找到指令
uj5u.com熱心網友回復:
$x , $y , $z 不包含任何有效的 bash 命令。基本上` 不是必需的。
代替
if [ `$x -eq $y` ]
你需要使用
if [ "$x" -eq "$y" ]
uj5u.com熱心網友回復:
您應該檢查您的輸入是否為正整數。
我將等腰線的測驗寫為乘法:更有趣,而不是更好。
#!/bin/bash
read -p "Give the length of the 3 sides (as integers): " x y z
if (( x == y )) && (( y == z)); then
echo "EQUILATERAL"
elif (( (x-y) * (y-z) * (z-x) == 0 )); then
echo "ISOSCELES"
else
echo "SCALENE"
fi
uj5u.com熱心網友回復:
作業示例:
#!/bin/bash -x
read x y z
if [ "$x" -eq "$y" ] && [ "$y" -eq "$z" ]
then
echo "EQUILATERAL"
elif [ "$x" -eq "$y" ] || [ "$z" -eq "$y" ] || [ "$z" -eq "$x" ]
then
echo "ISOSCELES"
else
echo "SCALENE"
fi
輸出:
~# ./1.sh
read x y z
3 3 3
'[' 3 -eq 3 ']'
'[' 3 -eq 3 ']'
echo EQUILATERAL
EQUILATERAL
~# ./1.sh
read x y z
3 3 4
'[' 3 -eq 3 ']'
'[' 3 -eq 4 ']'
'[' 3 -eq 3 ']'
echo ISOSCELES
ISOSCELES
~# ./1.sh
read x y z
3 4 5
'[' 3 -eq 4 ']'
'[' 3 -eq 4 ']'
'[' 5 -eq 4 ']'
'[' 5 -eq 3 ']'
echo SCALENE
SCALENE
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/397119.html
