为何我的Shell代码无论输入奇偶始终返回Even?
问题分析与解决
你的Shell脚本始终返回"Even"的核心原因是:测试代码通过命令行参数传递数字,但脚本却在等待从标准输入读取值,导致变量x没有被正确赋值为目标数字。在Bash的算术表达式((...))中,未定义的变量会被当作0处理,而0是偶数,所以脚本永远输出"Even"。
修正后的Shell脚本
把原来依赖标准输入的read语句改成从命令行参数获取数字:
x=$1 if ((x % 2 == 0)); then echo "Even" else echo "Odd" fi
为什么这样改?
测试代码里的run_shell(args: [x])是将数字作为第一个命令行参数传给Shell脚本,用$1就能直接拿到这个数字,替代原来交互式的read读取逻辑,这样脚本就能正确接收测试用例里的数字,完成奇偶判断。
内容的提问来源于stack exchange,提问作者Stefan Glova
相关产品推荐
相关产品推荐

