【Shell语言学堂】Shell 脚本练习1

2024-04-09 01:44

本文主要是介绍【Shell语言学堂】Shell 脚本练习1,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Shell 脚本练习

shell语言实战

    • Shell 脚本练习
    • 💧CSDN@划过手的泪滴t
      • 现有一个脚本可传入n个参数,要求在脚本中实现在终端输出第n个参数之前的所有参数(不包含第n个参数)
      • 编写一个计算bmi体质指数的脚本,该脚本需要用户输入身高和体重信息,公式为(BMI)=体重(kg)÷身高^2(m),将计算结果输出在终端
      • 简易的压缩脚本
      • 让用户输入一个文件名,并做如下判断:
      • 判断输入的数字是奇数还是偶数,并输出相应的消息。
      • 判断用户输入的用户名是否存在于系统中,并输出相应的消息。
      • 判断用户输入的文件是否存在,并输出相应的消息。
      • 判断当前用户是否为root用户,并输出相应的消息。
      • 计算bmi体质指数,根据结果判断需要输出的内容
    • 在这里插入图片描述


💧CSDN@划过手的泪滴t


现有一个脚本可传入n个参数,要求在脚本中实现在终端输出第n个参数之前的所有参数(不包含第n个参数)

#!/bin/bash
for i in "$*"
do
echo ${i% *}
done

在这里插入图片描述

编写一个计算bmi体质指数的脚本,该脚本需要用户输入身高和体重信息,公式为(BMI)=体重(kg)÷身高^2(m),将计算结果输出在终端

#!/bin/bash
read -p "请输入你的体重:" weight
read -p "请输入你的身高:" height
bmi=$(echo "scale=2; $weight / ($height * $height)" | bc)
# 输出BMI指数
echo "您的BMI指数为: $bmi"

在这里插入图片描述

简易的压缩脚本

#!/bin/bash
read -p "输入文件名" name
BACKUP=$name-$(date +%Y%m%d).tar.gz
tar zcvf $BACKUP $* &> /dev/null
echo -n "已执行 $0 的脚本"
echo -n "共压缩 $# 个文件"
echo "被压缩的文件有:$@"

在这里插入图片描述

在这里插入图片描述

让用户输入一个文件名,并做如下判断:

(1)如果用户输入的文件为空时,显示you must input a filename;
(2)如果用户输入的文件不存在时,显示the file do not exist;
(3)如果文件存在,判断该文件的文件类型和执行者对该文件所拥有的的权限。
说明:由于root在很多权限的限制上面都是无效的,所以使用root执行这个脚本时,常常会发现与ls -l的结果不相同。所以建议使用一般用户来执行这个脚本

#!/bin/bash
read -p "输入一个文件名:" name
if [ -z $name  ]
then
echo "you must input a filename"
elif [ -e $name   ]
then
ls -l $name
else
echo "the file do not exist"
fi

在这里插入图片描述
更人性化的写法:

#!/bin/bash
read -p "输入一个文件名:" name
if [ -z $name  ]
then
echo "you must input a filename"
elif [ -e $name   ]
then
test -f $name && echo '普通文件'||(test -d $name && echo '文件夹')
test -r $name && echo '读'&&(test -w $name && echo '写' )&&(test -x $name && echo '执行')
else
echo "the file do not exist"
fi

在这里插入图片描述

判断输入的数字是奇数还是偶数,并输出相应的消息。

#!/bin/bashread -p "请输入一个整数:" numif [ $(($num%2)) -eq 1 ]thenecho "这个数是奇数"elif [ $(($num%2)) -eq 0 ]thenecho "这是一个偶数"
fi

在这里插入图片描述

判断用户输入的用户名是否存在于系统中,并输出相应的消息。

#!/bin/bash
read -p "请输入一个用户名:" user
if ["$(compgen -u | grep $user)" = "$user"  ]
then
echo "存在"
else
echo "不存在"
fi

在这里插入图片描述

判断用户输入的文件是否存在,并输出相应的消息。

#!/bin/bash
read -p "输入一个文件名:" name
if [ -e $name   ]
then
echo "存在这个文件"
else
echo "不存在这个文件"
fi

判断当前用户是否为root用户,并输出相应的消息。

#!/bin/bashif [ $(whoami) = "root" ]thenecho "当前用户为root用户"elseecho "当前用户不为root用户"fi

在这里插入图片描述

计算bmi体质指数,根据结果判断需要输出的内容

  1. 当BMI指数为18.5~24.9时属正常
  2. BMI<18.5为消瘦
  3. BMI≥25.0为超重
#!/bin/bash
read -p "请输入你的体重:" weight
read -p "请输入你的身高:" height
bmi=$(echo "scale=2; $weight / ($height * $height)" | bc)
# 输出BMI指数
echo "您的BMI指数为: $bmi"
if [ $(echo "$bmi < 18.5" | bc ) -eq 1 ]; thenecho "您的身体状况为消瘦"
elif [ $(echo "$bmi >= 25.0" | bc ) -eq 1 ]; thenecho "您的身体状况为超重"
elseecho "您的身体状况为正常"
fi

在这里插入图片描述

在这里插入图片描述

这篇关于【Shell语言学堂】Shell 脚本练习1的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/886894

相关文章

微信公众号脚本-获取热搜自动新建草稿并发布文章

《微信公众号脚本-获取热搜自动新建草稿并发布文章》本来想写一个自动化发布微信公众号的小绿书的脚本,但是微信公众号官网没有小绿书的接口,那就写一个获取热搜微信普通文章的脚本吧,:本文主要介绍微信公众... 目录介绍思路前期准备环境要求获取接口token获取热搜获取热搜数据下载热搜图片给图片加上标题文字上传图片

C语言中的数据类型强制转换

《C语言中的数据类型强制转换》:本文主要介绍C语言中的数据类型强制转换方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C语言数据类型强制转换自动转换强制转换类型总结C语言数据类型强制转换强制类型转换:是通过类型转换运算来实现的,主要的数据类型转换分为自动转换

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

C语言实现两个变量值交换的三种方式

《C语言实现两个变量值交换的三种方式》两个变量值的交换是编程中最常见的问题之一,以下将介绍三种变量的交换方式,其中第一种方式是最常用也是最实用的,后两种方式一般只在特殊限制下使用,需要的朋友可以参考下... 目录1.使用临时变量(推荐)2.相加和相减的方式(值较大时可能丢失数据)3.按位异或运算1.使用临时

使用C语言实现交换整数的奇数位和偶数位

《使用C语言实现交换整数的奇数位和偶数位》在C语言中,要交换一个整数的二进制位中的奇数位和偶数位,重点需要理解位操作,当我们谈论二进制位的奇数位和偶数位时,我们是指从右到左数的位置,本文给大家介绍了使... 目录一、问题描述二、解决思路三、函数实现四、宏实现五、总结一、问题描述使用C语言代码实现:将一个整

C语言字符函数和字符串函数示例详解

《C语言字符函数和字符串函数示例详解》本文详细介绍了C语言中字符分类函数、字符转换函数及字符串操作函数的使用方法,并通过示例代码展示了如何实现这些功能,通过这些内容,读者可以深入理解并掌握C语言中的字... 目录一、字符分类函数二、字符转换函数三、strlen的使用和模拟实现3.1strlen函数3.2st

Go语言中最便捷的http请求包resty的使用详解

《Go语言中最便捷的http请求包resty的使用详解》go语言虽然自身就有net/http包,但是说实话用起来没那么好用,resty包是go语言中一个非常受欢迎的http请求处理包,下面我们一起来学... 目录安装一、一个简单的get二、带查询参数三、设置请求头、body四、设置表单数据五、处理响应六、超

C语言中的浮点数存储详解

《C语言中的浮点数存储详解》:本文主要介绍C语言中的浮点数存储详解,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、首先明确一个概念2、接下来,讲解C语言中浮点型数存储的规则2.1、可以将上述公式分为两部分来看2.2、问:十进制小数0.5该如何存储?2.3 浮点

通过Python脚本批量复制并规范命名视频文件

《通过Python脚本批量复制并规范命名视频文件》本文介绍了如何通过Python脚本批量复制并规范命名视频文件,实现自动补齐数字编号、保留原始文件、智能识别有效文件等功能,听过代码示例介绍的非常详细,... 目录一、问题场景:杂乱的视频文件名二、完整解决方案三、关键技术解析1. 智能路径处理2. 精准文件名

web网络安全之跨站脚本攻击(XSS)详解

《web网络安全之跨站脚本攻击(XSS)详解》:本文主要介绍web网络安全之跨站脚本攻击(XSS)的相关资料,跨站脚本攻击XSS是一种常见的Web安全漏洞,攻击者通过注入恶意脚本诱使用户执行,可能... 目录前言XSS 的类型1. 存储型 XSS(Stored XSS)示例:危害:2. 反射型 XSS(Re