Shell编程实例

5、监控内存和磁盘容量,小于给定值时报警 #!/bin/bash# 实时监控本机内存和硬盘剩余空间,剩余内存小于500M、根分区剩余空间小于1000M时,发送报警邮件给root管理员 # 提取根分区剩余空间disk_size=$(df / | awk '///{print KaTeX parse error: Expected 'EOF', got '}' at position 2: 4}̲'</span>)</div... 阅读详情

1、统计目录下的文件个数并显示处理

#!/bin/bash

if [ $# -ne 1 ];then
	echo "Usage $(basename $0) : please enter a argument."
	exit 1
fi

if [ ! -d $1 ];then
	echo "$1 is not directory,please enter a directory path."
	exit 2
else
	cd $1
fi

sum=0

for i in `ls -r *`
do
	
	echo $i
	
	sum=$[ $sum + 1 ]	
	
done

echo "--------------------------"
echo "The total file is : $sum."

2、9*9乘法表

[root@lissen test_sh]# cat 9.sh

#!/bin/bash

for i in `seq 9`
do
	for j in `seq $i`
	do
		echo -ne "$j*$i=$[i*j]\t"
	done
	echo
done

3、编写输出字符“Hello World!”
[root@lissen test_sh]# cat 1.sh

#!/bin/bash

echo "Hello world!"

[root@lissen test_sh]# ./1.sh
Hello world!

4、 测试输入的是否以数字开头
[root@lissen test_sh]# cat 3.sh

#!/bin/bash

if [ $# -ne 1 ];then
	echo "Usage:Please enter 1 argument."
	exit
fi

var_a1=$1

if [[ !$var_a1 =~ ^[0-9] ]];then
	echo "The argument can't be started with number."
	exit 2
else
	echo $var_a1
fi

[root@lissen test_sh]# ./3.sh
Usage:Please enter 1 argument.
[root@lissen test_sh]# ./3.sh 1fffffff
The argument can’t be started with number.
[root@lissen test_sh]# ./3.sh gan
gan

if [ $# -ne 1 ];then
	echo "Usage $(basename $0) : please enter a argument."
	exit 1
fi

arg1=$1

--包含负数
****if [[ ! $arg1 =~ ^[-0-9][0-9]+$ ]];then****
	echo "$arg1 is not a number."
	exit 2
else
	echo "$arg1"
fi

5、 通过位置变量创建 Linux 系统账户及密码

#!/bin/bash

if [ $# -ne 2 ];then
	echo "Usage:`basename $0`:Please enter  2 arguments."
	exit
fi

var_user=$1
var_passwd=$2

if [[ $var_user =~ ^[0-9] ]];then
	echo "\$1:username can't be started with number."
	exit 1
else
	useradd $var_user
	echo "$var_passwd" | passwd --stdin "$var_user"
fi

6、 监控内存和磁盘容量,小于给定值时报警

[root@kkk my_shell]# cat 3.sh
#!/bin/bash


lv_disk_size=$(df -m | awk '/\/$/{print $4}')

lv_mem_size=$(free -m | awk '/Mem/ {print $4}')

#当磁盘空间小于等于20G或内存小于等于2G时发送报警信息到root的邮箱
if [ $lv_disk_size -le 20480 ] || [ $lv_mem_size -le 2048 ];then
	mail -s "Warning" root <<EOF
		Insufficient resources
EOF
fi

7、猜数字游戏
[root@lissen test_sh]# cat 1.sh

#!/bin/bash

num=$(( $RANDOM % 100 + 1 ))		#生成随机数1-100

#定义一个无线循环
while :
do
	read -p "A number is created by computed,please guess:" guess
#定义输入数字检查
if [[ ! $guess =~ ^[0-9]+$ ]];then
		echo "$guess is not a number."
		exit 1
	fi
if [ $guess -eq $num ];then
		echo "Right!"
		exit
	elif [ $guess -gt $num ];then
		echo "The number is big!"
	else
		echo "The number is small!"
	fi
done

[root@lissen test_sh]# ./1.sh
A number is created by computed,please guess:50
The number is big!
A number is created by computed,please guess:25
The number is small!
A number is created by computed,please guess:37
The number is big!
A number is created by computed,please guess:30
The number is big!
A number is created by computed,please guess:29
The number is big!
A number is created by computed,please guess:27
The number is small!
A number is created by computed,please guess:28
Right!

8、数字排序
由小到大排列数字

#!/bin/bash

read -p "Please enter a number: " num1
if [[ ! $num1 =~ ^[0-9]+$ ]];then
        echo "Usage:$num1 is not a number,Please enter Number !"
        exit 1
fi

read -p "Please enter a number: " num2

if [[ ! $num2 =~ ^[0-9]+$ ]];then
        echo "Usage:$num2 is not a number,Please enter Number !"
        exit 1
fi

read -p "Please enter a number: " num3

if [[ ! $num3 =~ ^[0-9]+$ ]];then
        echo "Usage:$num3 is not a number,Please enter Number !"
        exit 1
fi

tmp=0

if [ $num1 -gt $num2 ];then
	tmp=$num1
	num1=$num2
	num2=$tmp
fi

if [ $num1 -gt $num3 ];then
	tmp=$num1
	num1=$num3
	num3=$tmp
fi

if [ $num2 -gt $num3 ];then
	tmp=$num2
	num2=$num3
	num3=$tmp
fi

echo "The sort from min to max is: $num1 $num2 $num3"	

[root@lissen test_sh]# ./2.sh
Please enter an integer:90
Please enter an integer:80
Please enter an integer:60
The number sort is : 60,80,90

9、 编写脚本测试 192.168.59.0/24 整个网段中哪些主机处于开机状态,哪些主机处于关机状态
[root@lissen test_sh]# cat 3.sh

#!/bin/bash

i=1
while [ $i -le 254 ]
do
	ping -c 2 -i 0.3 -W 1 192.168.59.$i &>/dev/null
	if [ $? -eq 0 ];then
		echo "192.168.59.$i is up."
	else
		echo "192.168.59.$i is down."
	fi
	let i=$i+1
done

使用函数

[root@lissen test_sh]# cat 6.sh

```bash
#!/bin/bash

function myping()
{
i=1
while [ $i -le 254 ]
do
	ping -c 2 -i 0.3 -W 1 192.168.59.$i &>/dev/null

#将ping所有的输出都重定向到/dev/null中

	if [ $? -eq 0 ];then
		echo "192.168.59.$i is up."
	else
		echo "192.168.59.$i is down."
	fi
	let i=$i+1
done
}

myping

10、判断输入的年份是否为闰年

[root@kkk my_shell]# cat 4.sh

#!/bin/bash

read -n 4 -p "Please enter a year : " year

echo

if [[ ! $year =~ ^[0-9]+$ ]];then
	echo "$year is not a number."
	exit 1
fi

if [ $[ $year%4 ] -eq 0 ] && [ $[ $year%100 ] -ne 0 ];then
	echo "$year is ren year."
	exit 0
elif [ $[ $year%400  ] -eq 0 ];then
	echo "$year is ren year."
	exit 0
else
	echo "$year is not a ren year."
fi

[root@kkk my_shell]# ./4.sh
Please enter a year : 2015
2015 is not a ren year.
[root@kkk my_shell]# ./4.sh
Please enter a year : fafa
fafa is not a number.
[root@kkk my_shell]# ./4.sh
Please enter a year : 2008
2008 is ren year.

11、测试用户登录

#!/bin/bash

for i in $(seq 1 1 3)
do
	read -p "Please enter a username : " username
	read -p "Please eneter a passwd : " passwd

	if [ $username == "gan" ] && [ $passwd == "123456" ];then
		echo "Logon successful!"
		exit
	fi
done

echo "Logon failed!"

12、从键盘上读取积分并确定积分等级

#!/bin/bash

read -p "Please enter the integeral[0-100] : " JF

if [[ ! $JF =~ ^[-0-9][0-9]+$ ]];then
	echo "$JF is not a number."
	exit 1
elif [ $JF -gt 100 ] || [ $JF -lt 0 ];then
	echo "$JF must be in 0-100."
	exit 2
fi


if [ $JF -ge 80 ] && [ $JF -le 100 ];then
	echo "$JF is A."
elif [ $JF -ge 60 ] && [ $JF -lt 80 ];then
	echo "$JF is B."
elif [ $JF -ge 0 ] && [ $JF -lt 60 ];then
	echo "$JF is C."
fi

13、判断用户输入的数据类型(字母、数字或其他类型)

使用CASE语句

#!/bin/bash

read -n 1 -p "Please enter : " KEY

echo 

case $KEY in 
	[a-z]|[A-Z])
		echo "$KEY is a characater."
		;;
	[0-9])
		echo "$KEY is a number."
		;;
	*)
		echo "$KEY is other."
		;;
esac

使用IF语句

#!/bin/bash

read -n 1 -p "Please enter : " KEY

echo 


if [[ $KEY =~ ^[0-9]$  ]];then
	echo "$KEY is a number."
elif [[ $KEY =~ ^[a-z][A-Z]$ ]];then
	echo "$KEY is a character."
else
	echo "$KEY is other."
fi

14、判断输入的参数是否为目录或文件

#!/bin/bash

if [ $# -ne 1 ];then
	echo "Usage $(basename $0) : Please enter a argument."
	exit 
fi

if [ -d $1 ];then
	echo "Dirctory $1 exists."
elif [ -f $1 ];then
	echo "File $1 exists."
else
	echo "$1 is not a directory or a file."
	exit 2
fi

15、Shell简单运算

#!/bin/bash

read -p "Please enter a number : " num1

if [[ ! $num1 =~ ^[-0-9][0-9]+$ ]];then
	echo "$num1 is not a number."
	exit 1
fi

read -p "Please enter a number : " num2

if [[ ! $num2 =~ ^[-0-9][0-9]+$ ]];then
        echo "$num1 is not a number."
        exit 2
fi

#num3=$[ $num1 + $num2 ]

#num3=$(($num1 + $num2))

let num3=$num1+$num2

echo "$num1 + $num2 = $num3"
鸿蒙开发进阶(OpenHarmony)Shell命令编程实例 在下面的两个例子中,演示如何使用静态注册命令方式和动态注册命令方式新增一个Shell命令:test。 阅读详情

相关推荐

shell编程实例收集

shell 实例收集 shell编程入门 http://www.runoob.com/linux/linux-shell-variable.html http://c.biancheng.net/cpp/shell/ 1.查找当前目录中所有大于500M的文件,把这些文件名写到一个文本文件中,并统计其个数。 find ./ -size +500M -type f | tee file_list | ...

weixin_42712724的博客 609

【Shell编程练习】监控内存和磁盘容量,小于给定值时报警

对于**磁盘容量**,可以使用`df`命令查看指定指定分区的磁盘使用情况。比如

m0_60511809的博客 674

Linux shell 编程之两个很详细的shell 实例

或许您是想将所有发出的邮件保存到一个文件中的人们中的一员,但是在过了几个月以后,这个文件可能会变得很大以至于使对该文件的访问速度变慢。并且写一个伪脚本(framework.sh),该脚本包含了大多数脚本都需要的框架结构,是一个非常不错的主意。这也是绝大多数的shell程序员要花费80%的时间来调试程序的原因。在检测用户提供了一个文件名以后,我们进行一个9到1的循环。循环完成之后,我们将原始文件命名为文件1同时建立一个与原始文件同名的空文件。我们希望您现在可以开始写您自己的shell脚本,希望您玩得开心。

m0_37449634的博客 149

实时监控linux系统内存和硬盘,空间不足时发送邮件告警

【代码】实时监控linux系统内存和硬盘,空间不足时发送邮件告警。

m0_64906080的博客 1484

Linux Shell编程实例详解

通过以上实例,我们可以看到Shell编程提供了丰富的功能和灵活性,可用于自动化任务和脚本编写。这些实例只是Shell编程的冰山一角,希望能为初学者提供一些启发和帮助。大家可以根据自己的需求和创造力进一步扩展和应用Shell编程的知识。本文将通过一些实例来详细介绍Shell编程的基本概念和用法,并附带相应的源代码。上述代码定义了一个名为say_hello的函数,并在函数内部使用echo命令输出问候语。上述代码使用了read命令来获取用户输入,并使用if语句和条件表达式进行判断。

TechGlide的博客 241

Linux Shell编程实例精讲

Linux Shell 是操作系统与用户之间的重要桥梁,作为命令行解释器,它不仅负责解析用户输入的命令,还具备强大的脚本编程能力,能够实现自动化任务处理。Shell 有多种实现类型,如 Bash(Bourne-Again Shell)、Zsh(Z Shell)等,它们在功能和语法上略有差异,但核心理念一致。Shell 通常通过终端启动,用户可自定义其行为,如修改提示符、设置别名和定义环境变量。Shell 的命令执行机制遵循“读取-解析-执行”的流程,理解这一机制有助于编写更高效的脚本和掌握系统行为逻辑。

weixin_26854475的博客 820

Win10禁用提示磁盘空间不足警告

Win10禁用提示磁盘空间不足警告

jacke121的专栏 3572

构建家庭NAS之三:在TrueNAS SCALE上安装qBittorrent

以qBittorrent为例,说明如何在TrueNAS SCALE上使用docker来安装应用。

luoqingyong的博客 7006

linux bash shell.sh编程实例

<br />linux bash shell.sh编程实例(2009-04-25 14:20:05)标签:it分类:原创<br />1.输出<br />#!/bin/bash<br />echo "Please type your number:"<br />read a<br />for ((i=1;i<=a;i++))<br />do<br />for ((p=1;p<=i;p++))<br />do<br />echo -n " $p "<br />done<br />echo<br />done<b

Cloud-Datacenter-Renewable Energy-Big Data-Model 1298

四足机器人关节电机FOC控制实战:从磁编码器校准到SVPWM调试避坑指南

本文详细解析了四足机器人关节电机FOC控制实战,涵盖磁编码器校准、电流环调试和SVPWM波形优化等关键环节。通过MIT Cheetah案例展示如何解决21倍电气误差问题,并提供相序自动校正、PI参数整定等实用代码片段,帮助工程师避开永磁同步电机(PMSM)控制中的常见陷阱。

weixin_29281915的博客 489

基于STM32智能震动报警器震动检测声光报警系统设计

*单片机设计介绍,基于STM32智能震动报警器震动检测声光报警系统设计。

2201_75940997的博客 2149

Shell 编程常用知识点用实例

Shell 编程 摘要: 本文结合大量实例阐述如何编写一个 shell 脚本。 为什么要进行 shell 编程 在 Linux 系统中,虽然有各种各样的图形化接口工具,但是 shell 仍然是一个非常灵活的工 具。Shell 不仅仅是命令的收集,而且是一门非常棒的编程语言。您可以通过使用 shell 使 大量的任务自动化,shell 特别擅长系统管理任务,尤其适合那些易用性、可维护性和

四哥的专栏 669

18、AI在基础设施管理与运维中的应用及未来趋势

本文探讨了人工智能(AI)在基础设施管理和运维中的广泛应用,包括性能优化、成本节约、网络安全等多个场景。文章详细介绍了AI在不同领域的应用工具、实际案例以及面临的挑战,并展望了未来AI在基础设施管理中的发展趋势。此外,还分析了AI与Site Reliability Engineering(SRE)框架的结合优势,展示了AI如何提升运维效率和系统可靠性。

n7o8p的博客 147

30个实例带你从零开始玩转Linux Shell脚本编程,成为Shell大神!

引言大家好,我是一位永远怀着学习的心态的Linux和Python技术持续学习者,在今天的文章中,我将向大家分享一些有趣而实用的Linux Shell脚本编程例子,通过这些例子,你可以系统地学习和掌握Shell脚本编程,从入门到精通。让我们开始这个令人兴奋的编程之旅吧!要求环境在跟随本教程的过程中,你需要准备以下环境:一台运行Linux操作系统的计算机任何一种基本的文本编辑器,如Vim、Nano等实...

ouyangzhenxin的博客 6312

使用 Simulink Real-Time 搭建一个完整的实时信号采集与滤波系统模型

本文详细介绍了基于Simulink Real-Time构建实时信号采集与滤波系统的完整流程。主要内容包括:系统配置(模型创建与参数设置)、信号采集模块搭建(模拟信号源或真实硬件连接)、实时滤波器设计(浮点/定点)、输出可视化(Scope/ToWorkspace等)、模型编译与下载到目标机、外部模式在线调试及数据保存方法。系统可实现微秒级实时信号处理,适用于工业控制、航空航天等对时间确定性要求高的场景。文章还提供了优化建议(多速率建模、优先级调度等)和应用场景说明,帮助读者快速掌握实时系统开发的核心技能。

amy_mhd的博客 304

RuoYi-Cloud-Plus使用minio进行文件上传图片后无法预览解决_修改minio配置minio桶权限---SpringCloud工作笔记198

在文件管理的位置,发现刚刚上传的图片文件,会显示 预览图片失败 后来经过多方查看,发现是minio的配置的问题。可以看到首先登录RuoYi-Cloud-Plus系统然后,打开文件管理页面可以看到,当上传了图片文件以后。登录以后,选中左侧Buckets,可以看到有自己用的桶,找到以后点击打开。显示文件展示中,文件预览失败,那么这个时候,去修改minio的配置。可以看到,点击配置管理,这里我们启用的是minio对吧。默认是没有配置的这个时候,是允许下载,但不允许预览的.

添柴程序猿的专栏 5567

shell高级编程实例(365例子)

shell高级编程实例(365例子) 去发现同类优质开源项目:https://gitcode.com/ 此仓库包含了一个Shell脚本高级编程的实例教程,共收录了365个编程例子,旨在帮助您深入理解并掌握Shell脚本的高级编程技巧。 本教程通过具体实例展示了如何使用continue N语句在实际任务中的应用。以下是一个任务分配的脚本示例,它展示了如何在多个机器间分配任务,以确保不会因为重复计算而...

gitblog_06743的博客 963

基于STM32L4XX、HAL库的ICM-42670-P姿态传感器驱动程序设计

sprintf(buffer, "温度: %.1f °C\r\n\r\n", sensor_data.temperature);sprintf(buffer, "陀螺仪: X=%.2f Y=%.2f Z=%.2f rad/s\r\n",sprintf(buffer, "加速度: X=%.2f Y=%.2f Z=%.2f m/s²\r\n",sprintf(buffer, "开始校准IMU,请保持传感器静止...\r\n");sprintf(buffer, "读取传感器数据失败\r\n");

zhusl6688的博客 641

Shell编程之循环语句实例

文章目录Shell编程之循环语句实例循环语句for循环语句while循环语句until循环语句循环的嵌套for循环的嵌套while的嵌套输出指定图形 Shell编程之循环语句实例 循环语句 for循环语句 读取不同的变量值,用来逐个执行同一组命令 for 变量名 in 取值列表 //连续范围取值可以{1..3} {1 2 3 } $(seq 1 3) //for ((i=1;i <=3; i++)) //以行、空格、制表符来识别列表 //for i in {2..

NicolasNRH的博客 1200

LAMMPS实例教程—In文件详解

本博文主要介绍专栏 《LAMMPS实例教程—In文件详解》, 针对于 Lammps 可分析的物理过程进行讲解,提供 In 文件以及后处理方法,持续更新。 目前分为8个专题: 1)力学专题、2)传热专题、3)相变专题、4)界面专题、5)吸附专题、6)流动专题、7)物性专题以及8)基础理论专题。

Rockyoung 3万+

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

五、Shell 脚本编程:从基础至实用实例

Shell 作为一种极为重要的命令行解释器,主要负责接收用户输入的各种命令,并将这些命令准确地传递至操作系统,以便操作系统能够对其进行执行。而 Shell 脚本则是由一系列 Shell 命令所组成的文本文件,它可以由 Shell 解释器逐行进行执行。通过 Shell 脚本编程,用户能够将多个不同的命令加以巧妙组合,从而实现复杂任务的自动化处理。在众多常见的 Shell 当中,有 Bash、Zsh、Ksh 等等,其中 Bash(Bourne Again Shell)是最为常用的一种。

DarrylDen的博客 864

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

shell及编程实例

1.shell简介 1) 概念--命令解释器 2) 常见shell bash linux标准shell sh 早期shell,较简单 csh ksh tcsh unix shell vi /etc/shells linux支持的shell 3) shell脚本--和php一样是脚本语言 所见即所得 在执行过程中进行编译所有的命令在shell当中都可以直接运行 ...

weixin_30782331的博客 261

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

【亲测免费】 Linux Shell 命令行及脚本编程实例详解

Linux Shell 命令行及脚本编程实例详解 去发现同类优质开源项目:https://gitcode.com/ 资源介绍 本仓库提供了一个名为“Linux shell 命令行及脚本编程实例详解.pdf”的资源文件下载。该文件是一本关于Linux开发和运维的实用手册,特别适合作为手头工具书使用。 文件描述 标题: Linux shell 命令行及脚本编程实例详解.pdf 内容: 该文件详细介绍...

gitblog_06663的博客 442

shell编程awk用法实例

(1)awk打印硬盘设备名称,默认以空格为分割,代码如下: df -h|awk ‘{print $1}’ df -h | awk -F"" ‘{print $2}’ (2)awk以空格、冒号、\t、分号为分割,代码如下: awk -F '[ ;\t: ]' '{print $1}' 2.txt (3)awk以冒号分割2.txt,打印第一列,同时将内容追加到/tmp/awk.log下,代码如...

beautyrain_zhang的博客 1784
下一篇: Oracle触发器常见实例
Lissen_Gan
博客等级 码龄13年 11粉丝 44原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值