Estou usando este código para verificar se a entrada do usuário (que é sempre um número) é par ou ímpar, mas o script sempre retorna "Par"
read -p "Enter a number: " x
if ((x % 2 == 0));
then echo "Even";
else echo "Odd";
fi
Estou usando este teste:
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
Seu código Ruby passa argumentos na linha de comando do shell script , mas o shell script está procurando argumentos em seu fluxo de entrada padrão .
Como em um contexto aritmético o shell trata uma string vazia como 0, você obtém um resultado sempre par.
Considere ler stdin apenas quando você não tiver recebido informações na linha de comando: