我用这段代码来检查用户的输入(总是数字)是偶数还是奇数,但是脚本总是返回“Even”
read -p "Enter a number: " x
if ((x % 2 == 0));
then echo "Even";
else echo "Odd";
fi
我使用这个测试:
def solution(x)
puts("Number: #{x}")
run_shell(args: [x]).strip
end
describe "Solution" do
it "should print 'Even' for even numbers" do
[0, 2, 4, 78, 100000, 1545452, -2, -10, -123456]
.each { |x| expect(solution(x)).to eq('Even') }
end
it "should print 'Odd' for odd numbers" do
[1, 3, 5, 77, 100001, 1545455, -1, -3, -9, -12345]
.each { |x| expect(solution(x)).to eq('Odd') }
end
end
1条答案
按热度按时间mwecs4sa1#
您的Ruby代码在shell脚本的命令行 * 上传递参数 *,但shell脚本在其标准输入流 * 上查找参数 *。
因为在算术上下文中,shell将空字符串视为0,所以得到的结果总是偶数。
只有在命令行上没有提供输入时,才考虑从stdin中阅读: