【问题标题】:print even and odd numbers打印偶数和奇数
【发布时间】:2021-03-28 07:12:47
【问题描述】:

现在我的代码是这样的

!/bin/bash

read INPUT
for number in $(seq 1 $INPUT); do
        if [ $((number%2)) -eq 0 ]
        else [ $((number%2)) -eq 1 ]; then
           echo $number
        fi
done

然后我得到下一个错误

./script.sh: line 6: syntax error near unexpected token `else'
./script.sh: line 6: `        else [ $((number%2)) -eq 1 ]; then'

【问题讨论】:

  • 使用另一个使用-ne而不是-eq的循环
  • 或使用-eq 1
  • 不要将代码放入 cmets。编辑问题以显示您的尝试,并解释为什么它不起作用。
  • 你遇到了什么错误?
  • print even numbers, how do i print odd numbers aswell? 打印所有数字,seq 1 $INPUT 打印所有数字。

标签: bash if-statement syntax


【解决方案1】:

您在if 之后缺少then 语句。

您可以将变量设置为输入数字的奇偶校验。然后,您可以在测试范围内的每个数字时使用该变量。

#!/bin/bash

read INPUT
parity=$((INPUT%2))
for number in $(seq 1 $INPUT); do
    if [ $((number%2)) -eq $parity ]; then
       echo $number
    fi
done

【讨论】:

  • 我希望代码在我写 10 时只显示偶数 EX: 2,4,6,8,10 和当我写 9 1,3,5,7,9 时显示奇数
  • 问题中为什么不这么说?
【解决方案2】:

我认为您正在寻找这样的东西:

#!/bin/bash
read INPUT
str=""
for each in $(seq 1 $INPUT); do
    [[ $((each%2)) -eq 0 ]] && str="$str $each"
done
echo $str

这样做是在 if 语句 $(()) 中执行检查,而 && 表示如果为 true,则执行以下操作,即在满足我们标准的字符串中构建一个字符串。

例子:

14
2 4 6 8 10 12 14

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-08
    相关资源
    最近更新 更多