【问题标题】:Bash script to give n numbers and print even numbersBash脚本给出n个数字并打印偶数
【发布时间】:2021-04-23 22:39:57
【问题描述】:

我正在尝试为

编写一个 bash 脚本

"给定一个大于 1 的正整数 N,编写一个脚本来显示 0 到 N 之间的偶数。 例如:已读取数字 12。这 程序必须具有作为输出:0、2、4、6、8、10 和 12;"

到目前为止,我是这样做的:

ex5.sh

#!/bin/bash

echo "Number :"
read num;

for (( i = 1; i >= $num; i++ ))
do
   if [ $(($i % 2)) -eq 0 ]
   then
        echo $i
   fi
done

当我编译时,它不打印数字。我找不到问题出在哪里

我也尝试过使用 for-in 循环

#!/bin/bash

echo "Number :"
read num;

for i in $num
do
   if [ $(($i % 2)) -eq 0 ]
   then
        echo $i
   fi
done

这次只打印我输入的数字。例如,我把 4 放在终端它也打印 4

非常感谢

【问题讨论】:

  • i >= $num -> i <= $num
  • 啊,谢谢!没看到...由于我无法接受您的回答,我应该删除这些问题吗?
  • 你可以做seq 0 2 $num

标签: linux bash shell


【解决方案1】:

这种方式可以让你的代码正常工作:

echo -n "Number : "
read num;

for i in $(seq 0 $num)
do
   if [ $(expr $i % 2) == 0 ]
   then
        echo $i
   fi
done

bash ex5.sh
Number : 12
0
2
4
6
8
10
12

【讨论】:

    【解决方案2】:

    ` echo -n "号码:" 读取数字;

    for i in $(seq 0 $num) 做 如果 [ $((num%2)) -eq 0 ] 然后 回声 $i 菲 完毕 `

    【讨论】:

    • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
    【解决方案3】:
    #!/bin/bash
    
    read -p "Number: " num
    awk '{for(i=0;i<=$1;i++) if(i%2 == 0) print i}'<<<$num
    
    ./printNumbers.sh
    Number: 8
    0
    2
    4
    6
    8
    
    # to get a list use printf
    awk '{for(i=0;i<=$1;i++) if(i%2 == 0) printf i","}'<<<$num | sed 's/,$//'
    
    ./printNumbers.sh
    Number: 8
    0,2,4,6,8
    

    【讨论】:

      【解决方案4】:
      #!/usr/bin/env bash
      read -p 'Number: ' num
      seq 0 2 "$num"
      

      【讨论】:

        猜你喜欢
        • 2020-06-21
        • 2020-03-24
        • 2013-05-06
        • 2014-09-12
        • 1970-01-01
        • 2017-10-02
        • 1970-01-01
        • 2020-03-08
        相关资源
        最近更新 更多