比较无法正常工作的数字(黑客等级中的Bash脚本)
根据以下链接中所述的问题: 我的代码在MacOSX终端上运行良好,但在Hackerrank中提交相同的代码时,其中一个测试用例失败了。我不知道为什么会这样。如果有任何答案,我将不胜感激比较无法正常工作的数字(黑客等级中的Bash脚本),bash,macos,shell,sh,Bash,Macos,Shell,Sh,根据以下链接中所述的问题: 我的代码在MacOSX终端上运行良好,但在Hackerrank中提交相同的代码时,其中一个测试用例失败了。我不知道为什么会这样。如果有任何答案,我将不胜感激 read X read Y if [[ $X > $Y ]] then echo "X is greater than Y" elif [[ $X < $Y ]] then echo "X is less than Y" else echo "X is equal
read X
read Y
if [[ $X > $Y ]]
then
echo "X is greater than Y"
elif [[ $X < $Y ]]
then
echo "X is less than Y"
else
echo "X is equal to Y"
fi
HackerRank Custom Test Case:
Compilation Successful
Input (stdin)
-100
100
Your Output
X is greater than Y
readx
阅读
如果[[$X>$Y]]
然后
回声“X大于Y”
elif[$X<$Y]]
然后
回声“X小于Y”
其他的
回声“X等于Y”
fi
HackerRank自定义测试用例:
编译成功
输入(标准输入)
-100
100
你的产出
X大于Y
我不知道你为什么会得到这个结果;在实际bash中,我得到“X小于Y”。但是,您的脚本实际上在另一方面是错误的:在[[]]
中,
进行字母比较,而不是数字比较。为了理解差异,请考虑<代码> [〔5<1000〕〕/代码>将作为假,因为“5”在字符排序之后出现在“1”之后。要进行数值比较,请使用-lt
和-gt
。我不确定为什么会得到这个结果;在实际bash中,我得到“X小于Y”。但是,您的脚本实际上在另一方面是错误的:在[[]]
中,
进行字母比较,而不是数字比较。为了理解差异,请考虑<代码> [〔5<1000〕〕/代码>将作为假,因为“5”在字符排序之后出现在“1”之后。要进行数值比较,请使用-lt
和-gt
。您可以使用Bash上下文(…)
与测试上下文[[…]]
进行更典型的算术比较:
x=-5
y=5
if ((x>y)); then
echo "X is greater than Y"
elif ((x<y)); then
echo "X is less than Y"
else
echo "X is equal to Y"
fi
在[…]]
内部,
或==
测试字符串比较
这两种方法都只适用于整数;要使用浮点,需要使用awk
、bc
或其他浮点解释器。确保在[[test]]
中使用双引号“$x”
,(())
使用用户输入,确保测试$x
和$y
是否为实际值
数字。好的测试…您可以使用Bash上下文(…)
vs测试上下文[…]]
来获得更典型的算术比较:
x=-5
y=5
if ((x>y)); then
echo "X is greater than Y"
elif ((x<y)); then
echo "X is less than Y"
else
echo "X is equal to Y"
fi
在[…]]
内部,
或==
测试字符串比较
这两种方法都只适用于整数;要使用浮点,需要使用awk
、bc
或其他浮点解释器。确保在[[test]]
中使用双引号“$x”
,(())
使用用户输入,确保测试$x
和$y
是否为实际值
数字。好的测试…之前、之后、更大、更小——我仍然依靠我的手指正如问题陈述中所述,我在Mac终端上也得到了正确的答案。但在Hackerrank上提交解决方案时,它显示了上述错误。虽然我很高兴,因为评论内容丰富。之前、之后、更大、更小——我仍然用手指数着!;-)正如问题陈述中所述,我在Mac终端上也得到了正确的答案。但在Hackerrank上提交解决方案时,它显示了上述错误。虽然我很高兴,因为评论内容非常丰富。你的解决方案在Mac终端和HackerRank上都有效。我知道我做错了什么,但现在的问题是为什么我的解决方案在Mac终端而不是在HackerRank中工作。HackerRank的问题是如何读取x和y的值。如果您将
read x
和read y
放在代码提交的顶部,我这里的两种解决方案都有效。您的解决方案在Mac终端和HackerRank上都有效。我知道我做错了什么,但现在的问题是为什么我的解决方案在Mac终端而不是在HackerRank中工作。HackerRank的问题是如何读取x和y的值。如果您将read x
和read y
放在代码提交的顶部,我这里的两种解决方案都有效。