SHELL-双重循环习题练习

1.99乘法表

#!/bin/bash
#99乘法表for ((second=1; second<=9; second++))
dofor ((first=1; first<=second; first++))do  echo -n -e "${first}*${second}=$[first*second]\t"    done	echo ''
done
#########
首先定义了一个外循环变量second,初始值为1,循环条件是second小于等于9。
在外循环内部,定义了一个内循环变量first,初始值为1,循环条件是first小于等于second。4
在内循环内部,使用echo命令输出"first*{second}=[first*second]\t",其中[first*second]表示计算first和second的乘积。
在内循环结束后,使用echo命令输出一个空行。
最后结束外循环。

2.等腰三角 图形拼接的方式

#!/bin/bash
#等腰三角 图形拼接的方式#控制三角形的行数
for ((a=1; a<=9; a++))
do#输出空格倒三角for ((i=9; i>a; i--))doecho -n " "done#输出正直角三角for ((b=1; b<=a; b++))doecho -n "*"done#输出小一号的正直角三角,第一行不输出*for ((c=1; c<a; c++))doecho -n "*"done#每行换行echo ""
done
################
第一个内层循环用于输出空格,以形成倒三角形的形状。它从9开始递减到当前行数a,每次输出一个空格。
第二个内层循环用于输出正直角三角形的星号(*)。它从1递增到当前行数a,每次输出一个星号。
第三个内层循环用于输出小一号的正直角三角形的星号(*),但第一行不输出星号。它从1递增到当前行数a-1,每次输出一个星号。

3.通过脚本输出环境变量PATH所包含的所有目录以及其中的子目录和所有不可执行文件

#!/bin/bash
#通过脚本输出环境变量PATH所包含的所有目录以及其中的子目录和所有不可执行文件length=$(echo $PATH | awk -F: '{print NF}')
path=$PATHfor ((i=1; i<=length; i++))
dofolder=${path%%:*}path=${path#*:}find $folder -type dfiles=$(find $folder -type f)for j in $filesdoif [ ! -x $j ];thenecho "$j 为不执行文件"fidonedone
##############
获取PATH环境变量中包含的目录数量,赋值给变量length。
将PATH环境变量的值赋给变量path。
使用for循环遍历每个目录。
在每次循环中,提取path中的第一个目录,赋值给变量folder。
更新path,去掉已经提取的目录。
使用find命令查找当前目录下的所有子目录。
使用find命令查找当前目录下的所有文件,并将结果赋值给变量files。
使用for循环遍历files中的每个文件。
判断当前文件是否为不可执行文件,如果是,则输出文件名。

4.写个逛淘宝选购商品脚本,每家商店有五种商品选购(衣服500元,裤子400元,鞋子350元,帽子150元,袜子50元),每次选购完或不买都会提示用户是否继续逛下一家商店,如果不再继续逛的话进行购物车结算总额。

#!/bin/bash
#写个逛淘宝选购商品脚本,每家商店有五种商品选购(衣服500元,裤子400元,鞋子350元,帽子150元,袜子50元),每次选购完或不买都会提示用户是否继续逛下一家商店,如果不再继续逛的话进行购物车结算总额。#店数的变量
n=1
#购物总额的变量
sum=0
while true
doecho "来到第${n}家商店的门口"read -p "是否进店逛逛?(yes/no)" doinguntil [ "$doing" == "no" ]doecho -e "欢迎光临!\n1:衣服¥500\n2:裤子¥400\n3:鞋子¥300\n4:帽子¥200\n5:袜子¥100\n6:放弃购买"read -p "请选择需要购买的商品序号:" numcase $num in1)echo "衣服购买成功"let sum+=500;;2)echo "裤子购买成功"let sum+=400;;3)echo "鞋子购买成功"let sum+=300;;4)echo "帽子购买成功"let sum+=200;;5)echo "袜子购买成功"let sum+=100;;6)echo "放弃购买";;*)echo "输入错误"esacread -p "是否继续在这家店购物?(yes/no)" doingdoneread -p "是否继续逛下一家店?(yes/no)" goingif [ "$going" == "yes" ];thenlet n++elsebreakfi
doneecho -e "一共逛了${n}家店,\n合计总消费为${sum}元"
##############################
#!/bin/bash:指定使用bash作为解释器。
#写个逛淘宝选购商品脚本,每家商店有五种商品选购(衣服500元,裤子400元,鞋子350元,帽子150元,袜子50元),每次选购完或不买都会提示用户是否继续逛下一家商店,如果不再继续逛的话进行购物车结算总额。:注释说明脚本的功能和规则。
n=1:定义变量n为1,表示开始逛第一家商店。
sum=0:定义变量sum为0,表示购物总额初始为0。
while true:无限循环,直到用户决定不再继续逛。
do:循环体开始。
echo "来到第${n}家商店的门口":输出当前逛的是哪一家商店。
read -p "是否进店逛逛?(yes/no)" doing:询问用户是否进入这家商店。
until [ "$doing" == "no" ]:如果用户选择不进入这家商店,则跳出循环。
do:循环体开始。
echo -e "欢迎光临!\n1:衣服¥500\n2:裤子¥400\n3:鞋子¥300\n4:帽子¥200\n5:袜子¥100\n6:放弃购买":列出五种商品供用户选择。
read -p "请选择需要购买的商品序号:" num:读取用户输入的商品序号。
case $num in:根据用户输入的商品序号执行相应的操作。
1):如果用户选择了衣服,输出购买成功信息,并将500加到购物总额中。
2):如果用户选择了裤子,输出购买成功信息,并将400加到购物总额中。
3):如果用户选择了鞋子,输出购买成功信息,并将300加到购物总额中。
4):如果用户选择了帽子,输出购买成功信息,并将200加到购物总额中。
5):如果用户选择了袜子,输出购买成功信息,并将100加到购物总额中。
6):如果用户选择了放弃购买,输出放弃购买的信息。
*):如果用户输入了其他数字,输出输入错误信息。
esac:结束case语句。
read -p "是否继续在这家店购物?(yes/no)" doing:询问用户是否继续在这家店购物。
done:循环体结束。
read -p "是否继续逛下一家店?(yes/no)" going:询问用户是否继续逛下一家店。
if [ "$going" == "yes" ];then:如果用户选择继续逛下一家店,执行下面的代码块。
let n++:将变量n加1,表示逛下一家店。
else:如果用户选择不再继续逛,执行下面的代码块。
break:跳出循环。
fi:结束if语句。
done:循环体结束。
echo -e "一共逛了${n}家店,\n合计总消费为${sum}元":输出总共逛了多少家店以及购物总额。

 5.菱形

#!/bin/bash
#菱形
read -p "请输入大小数值:" numfor ((a=1; a<=num; a++))
dofor ((i=num; i>a; i--))doecho -n " "donec=$[(a*2)-1]for ((b=1; b<=c; b++))doecho -n "*"doneecho ""
donefor ((a=num-1; a>=1; a--))
do#输出空格正三角for ((b=num; b>a; b--))doecho -n " "done#输出倒等腰三角c=$[(a*2)-1]for ((i=1; i<=c; i++))doecho -n "*"doneecho ""
done
######################
#!/bin/bash:这是一个shebang,指定了脚本的解释器为bash。
read -p "请输入大小数值:" num:提示用户输入一个数值,并将输入的数值赋值给变量num。
for ((a=1; a<=num; a++)):外层循环,控制打印的行数。
for ((i=num; i>a; i--)):内层循环,控制每行打印空格的数量。
echo -n " ":打印一个空格,但不换行。
c=$[(a*2)-1]:计算每行星号的数量。
for ((b=1; b<=c; b++)):内层循环,控制每行打印星号的数量。
echo -n "*":打印一个星号,但不换行。
echo "":换行。
for ((a=num-1; a>=1; a--)):外层循环,控制打印的行数。
for ((b=num; b>a; b--)):内层循环,控制每行打印空格的数量。
c=$[(a*2)-1]:计算每行星号的数量。
for ((i=1; i<=c; i++)):内层循环,控制每行打印星号的数量。
echo -n "*":打印一个星号,但不换行。
echo "":换行。

6.倒等腰三角形,5行

#!/bin/bash
#倒等腰三角形,5行#外循环控制三角的行数
for ((a=5; a>=1; a--))
do#输出空格正三角for ((b=5; b>a; b--))doecho -n " "done#输出倒等腰三角c=$[(a*2)-1]for ((i=1; i<=c; i++))    doecho -n "*"doneecho ""
done
#################
#!/bin/bash:这是一个shebang,指定了脚本的解释器为bash。
for ((a=5; a>=1; a--)):外层循环,控制打印的行数。
for ((b=5; b>a; b--)):内层循环,控制每行打印空格的数量。
echo -n " ":打印一个空格,但不换行。
c=$[(a*2)-1]:计算每行星号的数量。
for ((i=1; i<=c; i++)):内层循环,控制每行打印星号的数量。
echo -n "*":打印一个星号,但不换行。
echo "":换行。

7.等腰三角形

#!/bin/bash
#等腰三角形read -p "请输入三角形的大小数值:" num#控制三角形的行数
for ((a=1; a<=num; a++))
do#输出倒三角每行的空格数,第一行4个,第二行3个,每行做递减for ((i=num; i>a; i--))doecho -n " "done#输出等腰三角每行的*数,第一行输出1个,第二行3个,第三行5个,以此类推c=$[(a*2)-1]for ((b=1; b<=c; b++))doecho -n "*"doneecho ""
done
#################
#!/bin/bash:这是一个shebang,指定了脚本的解释器为bash。
read -p "请输入三角形的大小数值:" num:提示用户输入一个数值,并将输入的数值赋值给变量num。
for ((a=1; a<=num; a++)):外层循环,控制打印的行数。
for ((i=num; i>a; i--)):内层循环,控制每行打印空格的数量。
echo -n " ":打印一个空格,但不换行。
c=$[(a*2)-1]:计算每行星号的数量。
for ((b=1; b<=c; b++)):内层循环,控制每行打印星号的数量。
echo -n "*":打印一个星号,但不换行。
echo "":换行。

8.倒直角三角形

#!/bin/bash
#倒直角三角形#外循环控制行数
for ((a=1; a<=9; a++))
do#内循环控制每行输出的*数量,第一行输出最多,每行做递减for ((b=9; b>=a; b--))doecho -n "*"doneecho ""
done
#############################
#!/bin/bash:这是一个shebang,指定了脚本的解释器为bash。
for ((a=1; a<=9; a++)):外层循环,控制打印的行数。
for ((b=9; b>=a; b--)):内层循环,控制每行打印星号的数量。
echo -n "*":打印一个星号,但不换行。
echo "":换行。

9.9.正直角三角形

#!/bin/bash
#正直角三角形#外循环控制三角的行数
for ((a=9; a>=1; a--))
do#内循环控制每行输出的 * 的数量,第一行输出一个*,每行递增for ((b=9; b>=a; b--))do echo -n "*"doneecho ""
done
################
外循环控制三角的行数,从9到1递减;
内循环控制每行输出的 * 的数量,第一行输出一个*,每行递增;
使用echo -n ""在同一行输出多个;
使用echo ""换行

10.输出长度为9个*,4行的矩形

#!/bin/bash
#输出长度为9个*,4行的矩形for ((a=1; a<=4; a++))
dofor ((b=1; b<=9; b++))doecho -n '*'doneecho ''
done
##########
#!/bin/bash:这是一个shebang,指定了脚本的解释器为Bash。
#输出长度为9个*,4行的矩形:这是一个注释,用于描述脚本的功能。
for ((a=1; a<=4; a++)):这是一个for循环,用于控制矩形的行数。变量a从1开始递增,直到4。
do:表示for循环的开始。
for ((b=1; b<=9; b++)):这是一个嵌套的for循环,用于控制每行输出的 * 的数量。变量b从1开始递增,直到9。
do:表示内层for循环的开始。
echo -n '*':使用echo命令输出一个星号(*),并且不换行(-n选项)。
done:表示内层for循环的结束。
echo '':使用echo命令输出一个空字符串,用于换行。
done:表示外层for循环的结束。

​​​​​​​

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/12093.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI 情感聊天机器人工作之旅 —— 与复读机问题的相遇与别离

前言&#xff1a;先前在杭州的一家大模型公司从事海外闲聊机器人产品&#xff0c;目前已经离职&#xff0c;文章主要讨论在闲聊场景下遇到的“复读机”问题以及一些我个人的思考和解决方案。文章内部已经对相关公司和人员信息做了去敏&#xff0c;如仍涉及到机密等情况&#xf…

linux学习:多媒体开发库SDL+视频、音频、事件子系统+处理yuv视频源

目录 编译和移植 视频子系统 视频子系统产生图像的步骤 api 初始化 SDL 的相关子系统 使用指定的宽、高和色深来创建一个视窗 surface 使用 fmt 指定的格式创建一个像素点​编辑 将 dst 上的矩形 dstrect 填充为单色 color​编辑 将 src 快速叠加到 dst 上​编辑 更新…

连锁收银系统源代码有哪些功能,进销存+收银+会员+门店补货+线上商城

在现代零售行业&#xff0c;高效的管理系统是保持连锁店运营顺畅的关键。而开源连锁收银系统作为一款功能丰富的管理软件&#xff0c;为零售企业提供了全面的解决方案&#xff0c;涵盖了进销存管理、收银、会员、门店补货以及线上商城等多个方面&#xff0c;帮助企业实现精细化…

C语言判断字符旋转

前言 今天我们使用c语言来写代码来实现字符串选择的判断&#xff0c;我们来看题目 题目描述 写一个函数&#xff0c;判断一个字符串是否为另外一个字符串旋转之后的字符串。 例如&#xff1a;给定s1 AABCD和s2 BCDAA&#xff0c;返回1 给定s1abcd和s2ACBD&#xff0c;返回0. A…

想白嫖?音视频的文本提取和总结?NoteGPT满足你

NoteGPT实现了音频、录音以及视频的AI总结 NoteGPT最近做了一个功能&#xff1a;Audio Summary&#xff08;Audio Summary with AI - NoteGPT&#xff09; 1&#xff09;完全免费&#xff1b; 2&#xff09;支持mp3、mp4&#xff1b; 3&#xff09;支持URL和本地上传&…

【UE Niagara】在UI上生成粒子

效果 步骤 1. 在虚幻商城中将“Niagara UI Render”插件安装到引擎 2. 打开虚幻编辑器&#xff0c;勾选插件“Niagara UI Renderer”&#xff0c;然后重启编辑器 3. 先创建一个控件蓝图&#xff0c;该控件蓝图只包含一个按钮 这里设置尺寸框尺寸为200*50 4. 显示该控件 5. 新…

Excel——项目管理,设置时间到期自动提醒及颜色高亮

效果图 第一步、自动获取合同到期日期 1、首先合同【签约日期】和【到期日期】下面的数据必须是日期格式&#xff0c;不能是其它的格式否则无法计算&#xff0c;如果是其它格式需要转换成标准的日期格式&#xff0c;如下图所示。 2、在“到期日期”下面的第一个单元格中输入公…

如何让机器理解人类语言?Embedding技术详解

如何让机器理解人类语言&#xff1f;Embedding技术详解 文章目录 如何让机器理解人类语言&#xff1f;Embedding技术详解介绍什么是词嵌入&#xff1f;什么是句子嵌入&#xff1f;句子嵌入模型实现句子嵌入的方法值得尝试的句子嵌入模型 句子嵌入库实践Step 1Step 2Step 3 Doc2…

GBJ3510-ASEMI室内空调机GBJ3510

编辑&#xff1a;ll GBJ3510-ASEMI室内空调机GBJ3510 型号&#xff1a;GBJ3510 品牌&#xff1a;ASEMI 封装&#xff1a;GBJ-4 最大重复峰值反向电压&#xff1a;1000V 最大正向平均整流电流(Vdss)&#xff1a;35A 功率(Pd)&#xff1a;中小功率 芯片个数&#xff1a;4…

股东那些事儿:解锁企业背后的权力玩家与盈利秘籍

Hello&#xff0c;大家好啊&#xff0c;今天咱们要聊的主角&#xff0c;是每个企业背后不可或缺的隐形巨擘——股东。他们是谁&#xff1f;他们怎样从公司的经营中分一杯羹&#xff1f;又如何在商业棋盘上运筹帷幄&#xff1f;搬好小板凳&#xff0c;咱们这就开启股东世界的探秘…

Node.js 学习笔记 express框架

express express 使用express下载express 初体验 express 路由什么是路由1路由的使用验证的方法 2获取请求报文参数3获取路由参数4响应设置响应报文 express 中间件5中间件全局中间件路由中间件 6静态资源中间件注意事项案例 7请求体数据8防盗链实现防盗链 9路由模块化router E…

Java——类和对象第二节——封装

1.什么是封装 封装是面向对象程序的三大特性之一&#xff0c;面向对象程序的三大特性分别是封装&#xff0c;继承&#xff0c;多态 而封装简单来说就是套壳隐藏细节 打个比方&#xff1a; 在一些电脑厂商生产电脑时&#xff0c;仅对用户提供开关机键&#xff0c;键盘输入&a…

瑞友科技质量改进服务事业部总经理张力受邀为第十三届中国PMO大会演讲嘉宾

全国PMO专业人士年度盛会 北京瑞友科技股份有限公司质量改进服务事业部总经理张力先生受邀为PMO评论主办的2024第十三届中国PMO大会演讲嘉宾&#xff0c;演讲议题为“PMO如何对接战略成为企业IT投资成功的有效保障”。大会将于6月29-30日在北京举办&#xff0c;敬请关注&#x…

一个不知名的开源项目可以带来多少收入

起源 2020 年新冠疫情开始蔓延&#xff0c;当时我在同时经营 3 个不同的公司。除了其中的体育赛事平台因为疫情关门大吉之外&#xff0c;另外两个公司并没有受影响&#xff0c;营收和利润反而都持续增加。但是连续几个月不能出远门&#xff0c;也不能随便见朋友和客户&#xff…

软件测试到了35岁,真的就干不动了吗?

摘要&#xff1a;随着年龄的增长&#xff0c;很多人担心软件测试岗位是否存在技术瓶颈。本文将从零到一&#xff0c;详细且规范地探讨软件测试岗位在35岁后的发展前景&#xff0c;并提供一些建议以应对可能的挑战。 引言&#xff1a;软件测试作为软件开发生命周期中至关重要的…

基于PySpark进行去哪儿网数据分析

基于PySpark进行去哪儿网数据分析 本文介绍了如何使用PySpark对去哪儿网的数据进行分析&#xff0c;从而洞察用户偏好、热门目的地以及销售趋势。 1.数据加载 我们需要确保已经准备好了PySpark的开发环境&#xff0c;并且准备好了去哪儿网的数据集。可以通过创建SparkSessio…

SpringCloudAlibaba:5.1Sentinel的基本使用

概述 简介 Sentinel是阿里开源的项目&#xff0c;提供了流量控制、熔断降级、系统负载保护等多个维度来保障服务之间的稳定性。 官网 https://sentinelguard.io/zh-cn/ Sentinel的历史 2012 年&#xff0c;Sentinel 诞生&#xff0c;主要功能为入口流量控制。 2013-2017 年…

中北机械有限公司将参加2024长三角快递物流供应链与技术装备展览会

参展企业介绍 浙江中北机械有限公司总部位于浙江杭州&#xff0c;生产基地位于浙江桐乡。是一家有着十几年金属制品及仓储物流设施设备生产经验&#xff0c;专业设计、生产、制造各类物流钢制托盘&#xff0c;物流手推车&#xff0c;仓储货架及门店展架&#xff0c;宣传展架等物…

Pytorch读取自己的数据集

数据集 流程图 导包设置tfs创建datasets.ImageFolder创建torch.utils.data.DataLoader() import time import os from tqdm import tqdm import pandas as pd import numpy as np import torch import torchvision import torch.nn as nn import torch.nn.functional as F im…

7天精通Web APIs——正则阶段案例(理论+实战)(第六天)

正则表达式的定义和使用 定义&#xff1a;是一种匹配模式&#xff0c;用于匹配字符串中字符组合 作用&#xff1a;表单验证&#xff08;匹配&#xff09;、过滤敏感词&#xff08;替换&#xff09;、字符串中提取我们想要的部分&#xff08;提取&#xff09; 使用分为两步&…