【Shell牛客刷题系列】SHELL3 输出0到500中7的倍数:一起来学习seq命令和for循环的使用~



该系列是基于牛客Shell题库,针对具体题目进行查漏补缺,学习相应的命令。

刷题链接:牛客题霸-Shell篇

该系列文章都放到专栏下,专栏链接为:《专栏:Linux》。欢迎关注专栏~

本文知识预告:

  • 首先学习用于用于输出连续的数字固定间隔的数字指定格式的数字seq命令;
  • 然后给出了三种语法格式的for循环的使用;
  • 最后给出三种题目解决方案,都是有必要掌握的方法!


题目:SHELL3输出0到500中7的倍数

写一个 bash脚本以输出数字 0 到 500 中 7 的倍数(0 7 14 21…)的命令

相关命令学习

seq:打印数字序列

seq命令用于输出连续的数字固定间隔的数字指定格式的数字

语法格式: seq [参数]

常用参数:

-f格式
-s字符串
-w在列前添加0 使得宽度相同

具体示例如下:

输出连续的数字

lucky@DESKTOP-VQ8KID4:~$ seq 1 10
1
2
3
4
5
6
7
8
9
10

表示: 输出所有1到100之间的数字;

输出固定间隔的数字

lucky@DESKTOP-VQ8KID4:~$ seq 0 3 10
0
3
6
9

表示: 输出所有0到10内3的倍数;

输出指定格式的数字

  1. -s用于使用指定的字符串分割数字
lucky@DESKTOP-VQ8KID4:~$ seq -s "+" 1 10
1+2+3+4+5+6+7+8+9+10

表示:输出1到10之间的数字,每个数字间由+号间隔;

  1. -f使用print样式的浮点格式输出,默认使用%g
lucky@DESKTOP-VQ8KID4:~$ seq -f "file%g" 1 5
file1
file2
file3
file4
file5

for循环

实现for循环的方式有三种:

  • 带循环listfor循环
  • 不带循环listfor循环
  • C语法结果的for循环。

带循环listfor循环

  • 实现一:依次输出训练list中的内容 【list内容可以是数字也可以是字符串】
for item in 1 4 5  hello world
 do 
    echo $item
done
  • 实现二:依次输出一个范围内的值,如下为输出1到5的值
for item in {1..5}
do
    echo $item
done
  • 实现三: 设置输出的间隔值,如下为间隔2输出【也就是输出10以内的所有奇数】
for item in {1..10..2}
do
    echo $item
done
  • 实现四: 输出当前目录下所有的文件和文件夹
for file in $(ls)
do 
    echo $file
done

或者

for file in *
do 
    echo $file
done

不带循环listfor循环

将输入的参数循环输出【这里使用@来获取参数列表】,脚本test.sh内容如下:

lucky@DESKTOP-VQ8KID4:~$ cat param.sh
echo "input the world:"
for item in "$@"
do
    echo $item
done
echo "total param : $#"

lucky@DESKTOP-VQ8KID4:~$ bash param.sh hello world
input the world:
hello
world
total param : 2

【备注】$@ 获取参数列表内容; $# 获取输入参数的个数。

C语法结果的for循环

基本是C语言的语法:

lucky@DESKTOP-VQ8KID4:~$ cat param.sh
for ((i=0;i<=10;i+=3))
do
        echo $i
done
lucky@DESKTOP-VQ8KID4:~$ bash param.sh
0
3
6
9

题目解决方案

方法一:seq命令

利用seq命令输出固定间隔的数字

seq 0 7 500

方法二:for循环

从0数到500,每个数字对7进行取模。如果%7=0,则表示该数为7的倍数

for i in {0..500}; do
	if [[ i%7 -eq 0 ]]; then
		echo $i
	fi
done

设置输出的间隔值为7,也可满足输出的数都是7的倍数

for num in {0..500..7}
do
	echo "${num}"
done

方法三:while循环

从0数到500,每个数字对7进行取模。如果%7=0,则表示为倍数

num=0
while (($num <= 500)); do
	if (($num % 7 == 0)); then
		echo $num
	fi
	let num++
done

初始值为0,可直接输出,以7为倍数进行自增并输出。得到的结果都是满足题意

num=0
while (($num <= 500)); do
	echo $num
	let num+=7
done
  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奋斗的西瓜瓜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值