shell脚本语句(画矩形、三角形、乘法表和小游戏)(#^.^#)

news2024/10/6 12:28:43

目录

一、语句

一、条件语句

一、以用户为例演示

一、显示当前登录系统的用户信息

 二、显示有多少个用户

二、单分支if

一、输入脚本

 二、验证结果

三、双分支if

一、输入脚本

二、验证结果 

四、多分支if

一、输入脚本

 二、验证

二、循环语句

一、shell版本的循环语句

二、C语言版本

三、举例

三、输出一个矩形

四、在矩形的基础上显示一个三角形

 五、输出九九乘法表

 六、猜价格(小游戏)

一、脚本配置

 二、验证

一、显示结果(第一种)

二、显示结果(第二种)


一、语句

一、条件语句

一、以用户为例演示

一、显示当前登录系统的用户信息

w命令

 二、显示有多少个用户

w | wc -l

 显示有7个用户

前两个是固定标题,从第三个开始才是登录用户,所以要统计数量需要

命令:echo $[$(w | wc -l) -2]

显示结果

二、单分支if

语法:if condition;then command

一、输入脚本

#!/bin/bash
#test
#mpy
#单分支if
user_num=$[$(w | wc -l) - 2]
if [ $user_num -gt 3 ];then
        echo "用户过多登录"
fi


 二、验证结果

三、双分支if

语法:if condition;then command;else command

一、输入脚本

#多分支if
if [ $user_num -gt 5 ];then
        echo "登录用户过多"
else
        echo "登录用户适中"
fi

 

二、验证结果 

 

四、多分支if

语法:if condition;then command;elif condition;then command;elif

#多分支if   成绩判断

一、输入脚本


#A:90~100;B:80~89;C:70~79;D:0~69
read -p "请输入要查询的成绩: " score
if [ $score -lt 0 -o $score -gt 100 ];then
        echo "输入错误,请输入0~100的数字"
        $0
else
        if [ $score -ge 90 -a $score -le 100 ];then
                echo "A"
        elif [ $score -ge 80 -a $score -le 89 ];then
                echo "B"
        elif [ $score -ge 70 -a $score -le 79 ];then
                echo "C"
        else
                echo "D"
        fi
fi

在这段脚本中,使用了read命令来获取用户输入的成绩,并存储在变量score中

使用if语句判断输入的成绩是否小于0或大于100,如果是,则打印错误信息并重新运行脚本

90-100的区间是A

80-89 的区间是B

70-79的区间是C

其余的是D

 二、验证

二、循环语句

一、shell版本的循环语句

for i in 取值范围;do
        command
done

二、C语言版本

for ((i=初始值;condition;i++));do command done

 for ((i=初始值;condition;i--));do command done

则是递减1

三、举例

for i in {1..10};do
        echo $i
done

可以在里面嵌入if语句,满足条件时数数,不满足则不数数 

for i in {1..10};do
        if [ $(($i % 2)) -eq 0 ];then
                echo $i
        fi
done

等于0的时候输出,不等于0则不管

验证结果

只显示奇数

for i in {1..10};do
        if [ $(($i % 2)) -ne 0 ];then
                echo $i
        fi
done
 

因为除2 不是0就是1

验证

 C语言的写法

for ((i=1;i<=10;i=i+2));do
        echo $i
done

每次递增两个

验证

当等于i=i+3的时候从1开始每次加三个 

 

 for ((i=2;i<=10;i=i+2));do
        echo $i
done

显示只有偶数

从2开始每次递增2

三、输出一个矩形

#!/bin/bash
#test
#mpy
for ((i=1;i<=10;i++));do
        for ((j=1;j<=10;j++));do
                echo -n "  *"
        done
        echo
done


 赋予权限   chmod +x jx.sh

./jx.sh

成功获得一个矩形

四、在矩形的基础上显示一个三角形

 #!/bin/bash
#test
#mpy
for ((i=1;i<=10;i++));do
        for ((j=1;j<=i;j++));do
                echo -n "  *"
        done
        echo
done

 五、输出九九乘法表

#!/bin/bash
#test
#mpy
for ((i=1;i<10;i++));do
        for ((j=1;j<=i;j++));do
                echo -n -e "$j x $i = $[i*j]\t"
        done
        echo
done

这是一个Bash脚本

  1. #!/bin/bash:这是一个shebang,告诉系统要使用bash解释器来运行脚本。

  2. #test 和 #mpy:这是注释行,用于说明脚本的用途和功能。

  3. for ((i=1;i<10;i++)):这是一个外循环的for循环,它从1开始迭代,每次增加1,直到i的值小于10为止。

  4. for ((j=1;j<=i;j++)):这是一个嵌套在外循环中的内循环的for循环,它从1开始迭代,每次增加1,直到j的值小于等于i为止。

  5. echo -n -e "$j x $i = $[i*j]\t":这是一个echo语句,用于打印乘法表的一行。其中$j$i是变量,代表内外循环的迭代值,$[i*j]表示i和j的乘积。

  6. echo:这是一个空的echo语句,用于打印换行符,以便在打印完一行乘法表后换行。

 

显示结果

 六、猜价格(小游戏)

一、脚本配置


#!/bin/bash
#test
#mpy
rand=$[$RANDOM % 100]
times=0
while true
do
        read -p "请输入你要猜测的价格: " price
        let times++
        if [ $price -eq $rand ];then
                if [ $times -eq 1 ];then
                        echo "你猜对了,真NB,一次就中"
                elif [ $times -lt 7 ];then
                        echo "你猜对了,一共猜测了$times次! "
                else
                        echo "挑战失败! "
                        echo "正确的价钱是$rand"
                fi
                exit 0
        elif [ $price -gt $rand ];then
                echo "猜大了! "
        else
                echo "猜小了! "
        fi
done

 

 二、验证

一、显示结果(第一种)

二、显示结果(第二种)

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

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

相关文章

【Freertos基础入门】深入浅出信号量

文章目录 前言一、Freertos的信号量是什么&#xff1f;二、二进制信号量和计数型信号量是什么&#xff1f;三、信号量初步了解1.二进制信号量的使用2.give和take是什么&#xff1f;3.为什么需要动态和静态创建的方式&#xff1f; 四、二进制信号量示例代码总结 前言 本系列基于…

docker之镜像与数据卷

镜像 简介 1.镜像是一种轻量级、可执行的独立软件包&#xff0c;用来打包软件运行环境和基于环境开发的软件&#xff0c;他包含运行某个软件所需的所有内容&#xff0c;包括代码、运行时库、环境变量、配置文件 2.将所有的应用和环境11&#xff0c;直接打包成docker镜像&…

健康检测智能睡眠床垫方案

《2022中国睡眠质量调查报告》调查结果显示&#xff0c;16&#xff05;的被调查者存在夜间睡眠时间不足6个小时&#xff0c;表现为24点以后才上床睡觉&#xff0c;并且在6点之前起床&#xff1b;有83.81&#xff05;的被调查者经常受到睡眠问题困扰&#xff0c;其中入睡困难占2…

文心一言 VS 讯飞星火 VS chatgpt (79)-- 算法导论7.4 4题

四、请用go语言&#xff0c;证明:RANDOMIZED-QUICKSORT 期望运行时间是 Ω(nlgn)。 文心一言&#xff1a; 首先&#xff0c;为了证明RANDOMIZED-QUICKSORT的期望运行时间是Ω(nlg n)&#xff0c;我们需要证明在最坏的情况下&#xff0c;该算法的运行时间是O(nlg n)。然后&…

无涯教程-PHP.INI File Configuration函数

PHP配置文件php.ini是影响PHP功能的最终且最直接的方法。每次初始化PHP时都会读取php.ini文件。换句话说,无论是模块版本的httpd重新启动还是CGI版本的每次脚本执行都重新启动。如果未显示您的更改,请记住停止并重新启动httpd。 该配置文件已注释完整。键区分大小写,关键字值不…

阿里云服务器-修改ecs操作系统,把window系统更换成Linux操作系统

其他sql格式也在更新中&#xff0c;可直接查看这个系列&#xff0c;要是没有你需要的格式&#xff0c;可在评论或私信我 总目录 目录-后期更新打算 hive的nvl中的子查询 总目录我这个是window&#xff0c;默认应该都是window&#xff0c;我需要改成Linux系统第一步&#xff…

浅谈搭建CobaltStrike云服务器可能会遇到的一些问题

1.文件上传 若要将本机的文件上传至云服务器&#xff0c;你需通过Xshell来实现 先在xshell连接云服务器&#xff0c;命令行中执行rz命令&#xff0c;即可实现文件上传 若没有rz命令,则需用到以下命令进行安装(二选一): 适用于redhat linux: yum install lrzsz适用于centos或u…

使用Mavon-Editor编辑器上传本地图片到又拍云云存储(Vue+SpringBoot)

需求&#xff1a;将本地的图片上传到服务器或者云存储中&#xff0c;考虑之后&#xff0c;这里我选的是上传到又拍云云存储。 技术背景&#xff1a; 前端&#xff1a;VueAjax 后端&#xff1a;SpringBoot 存储&#xff1a;又拍云云存储原理&#xff1a;Mavon-Editor编辑器有两个…

大模型框架LangChain开发实战(二)

一、关于数据的准备及项目背景 Notion提供了团队管理的功能&#xff0c;方便团队成员进行在线协作办公&#xff0c;提高交互效率&#xff0c;notion上面的数据可能包括项目的数据&#xff0c;进度管理的数据&#xff0c;企业服务的数据等等&#xff0c;这里使用了从notion网站…

【校招VIP】产品分析能力之用户画像出发

考点介绍&#xff1a; 用户行为和交互是产品经理能力的重要部分&#xff0c;在校招中&#xff0c;基于用户画像的分析题和设计题也是高频考点。 『产品分析能力之用户画像出发』相关题目及解析内容可点击文章末尾链接查看&#xff01; 一、考点题目 1. 爱奇艺中搜索关键词“…

【C++ 学习⑮】- 模板进阶

目录 一、必须使用 typename 的场景 二、非类型模板参数 三、模板的特化 3.1 - 函数模板特化 3.2 - 类模板特化 3.2.1 - 全特化 3.2.2 - 偏特化 四、类模板分离式编译 4.1 - 分离编译的概念 4.2 - 类模板分离式的问题 4.3 - 解决方案 一、必须使用 typename 的场景 …

shell 基础3

在第一行后面追加内容 在第3行后面追加内容 在每行前面加 在第四行前面加入 -i表示添加在文本中 在每个22后面加 $a 在文件最后一行追加 匹配到每个包含22的行&#xff0c;并在之前加 把第7行整行替换 将所有匹配22的行替换 删除第5行 隔行删除&#xff0c;删除奇数行 删除偶数…

live555server环境搭建

live555环境搭建详解&#xff08;ubuntu18.04&#xff09; 1.环境依赖 openssl可选安不安 安装&#xff08;选择好版本&#xff09; sudo apt-get update sudo apt-get install openssl sudo apt-get install libssl-dev使用头文件是否可用时编译测试时记得链接&#xff08…

【C++入门到精通】C++入门 —— priority_queue(STL)优先队列

阅读导航 前言一、priority_queue简介1. 概念2. 特点 二、priority_queue使用1. 基本操作2. 底层结构 三、priority_queue模拟实现⭕ C代码⭕priority_queue中的仿函数 总结温馨提示 前言 ⭕文章绑定了VS平台下std::priority_queue的源码&#xff0c;大家可以下载了解一下&…

C#,数值计算——Ridders的多项式外推方法的计算方法与源程序

using System; namespace Legalsoft.Truffer { /// <summary> /// 通过Ridders的多项式外推方法返回函数func在点x处的导数。 /// 输入值h作为估计的初始步长&#xff1b;它不需要很小&#xff0c;而是应为x上的增量&#xff0c; /// 在此增量上func将发…

在CMD中找不到Bootrec/fixboot元素怎么办?

当您尝试在CMD中执行Bootrec/fixboot以修复Windows 7/8.1/8/10/11和Windows Server 2012等操作系统中的系统启动问题时&#xff0c;通常会遇到Bootrec/fixboot参数无效的情况。这类启动问题可能是由磁盘克隆、系统迁移、Windows更新、MBR和GPT转换等引起的。当一个问题仍然存在…

YOLO目标检测——矿石数据集图片下载分享

矿石图片&#xff0c;其中训练集包括“玄武岩”、“花岗岩”、“大理石”、“石英岩”、“煤”、“石灰石”、“砂岩”七种矿石图片。测试集包括24张相应的七种矿石图像。 数据集点击下载&#xff1a; 矿石数据集4500图片数据说明.rar

OpenGL学习路程(一)

Hello啊各位&#xff0c;鸽了挺长时间没更新&#xff0c;其实是博主找到新乐子了。 如标题所说&#xff0c;我正在学习OpenGL。 现在已经成功的调用显卡画出了一个三角形&#xff0c;这虽然不是什么大的成就&#xff0c;但已经让我很兴奋了。 我不打算在这里写出我配置openg…

Pyqt5-开源工具分解功能(文本拖拽)

开源第四篇:功能实现之拖拽功能与配置文件。 写这个功能的初衷,是因为,每次调试我都要手动敲命令,太麻烦了,想偷个懒,所以直接给这功能加上了,顺便衍生出了另一个想法,配置文件自动填写相关数据。 先看个简单的拖拽功能: 很明显吧,还是比较便捷的。所以我们本章,就在…

TextView加粗字体太粗

解决方法如下&#xff1a; import android.content.Context; import android.graphics.Canvas; import android.graphics.Paint; import android.util.AttributeSet;import androidx.annotation.Nullable; import androidx.appcompat.widget.AppCompatTextView;/*** 自定义加粗…