shell编程(四)脚本实例
2021/9/23 7:10:48
本文主要是介绍shell编程(四)脚本实例,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
例1:判断两台主机是否ping通
#!/bin/env bash # 该脚本用于判断当前主机是否和远程指定主机互通 # 交互式定义变量,让用户自己决定ping哪个主机 read -p "请输入你要ping的主机的IP:" ip # 使用ping程序判断主机是否互通 ping -c1 $ip &>/dev/null if [ $? -eq 0 ];then echo "当前主机和远程主机$ip是互通的" else echo "当前主机和远程主机$ip不通的" fi 逻辑运算符 test $? -eq 0 && echo "当前主机和远程主机$ip是互通的" || echo "当前主机和远程主机$ip不通的"
例2:判断一个进程是否存在
#!/bin/env bash # 判断一个程序(httpd)的进程是否存在 pgrep httpd &>/dev/null if [ $? -ne 0 ];then echo "当前httpd进程不存在" else echo "当前httpd进程存在" fi 或者 test $? -eq 0 && echo "当前httpd进程存在" || echo "当前httpd进程不存在"
例3:判断用户是否存在
#!/bin/env bash read -p "请输入一个用户名:" user_name id $user_name &>/dev/null if [ $? -eq 0 ];then echo "该用户存在!" else echo "用户不存在!" fi
例4:脚本计算1-100奇数和
方法1: #!/bin/bash sum=0 for i in {1..100..2} do sum=$[$i+$sum] done echo "1-100的奇数和为:$sum" 方法2: #!/bin/bash sum=0 for ((i=1;i<=100;i+=2)) do let sum=$i+$sum done echo "1-100的奇数和为:$sum" 方法3: #!/bin/bash sum=0 for ((i=1;i<=100;i++)) do if [ $[$i%2] -ne 0 ];then let sum=$sum+$i fi 或者 test $[$i%2] -ne 0 && let sum=$sum+$i done echo "1-100的奇数和为:$sum"
例5:判断所输整数是否为质数
#!/bin/bash read -p "请输入一个正整数字:" number [ $number -eq 1 ] && echo "$number不是质数" && exit [ $number -eq 2 ] && echo "$number是质数" && exit for i in `seq 2 $[$number-1]` do [ $[$number%$i] -eq 0 ] && echo "$number不是质数" && exit done echo "$number是质数" && exit
例6:随机产生139开头的电话号码
#!/bin/env bash #产生1000个以139开头的电话号码并保存文件phonenum.txt file=/shell03/phonenum.txt for ((i=1;i<=1000;i++)) do n1=$[$RANDOM%10] n2=$[$RANDOM%10] n3=$[$RANDOM%10] n4=$[$RANDOM%10] n5=$[$RANDOM%10] n6=$[$RANDOM%10] n7=$[$RANDOM%10] n8=$[$RANDOM%10] echo "139$n1$n2$n3$n4$n5$n6$n7$n8" >> $file done
#!/bin/bash i=1 while [ $i -le 1000 ] do n1=$[$RANDOM%10] n2=$[$RANDOM%10] n3=$[$RANDOM%10] n4=$[$RANDOM%10] n5=$[$RANDOM%10] n6=$[$RANDOM%10] n7=$[$RANDOM%10] n8=$[$RANDOM%10] echo "139$n1$n2$n3$n4$n5$n6$n7$n8" >> phonenum.txt let i++ done
例7:随机抽取5位幸运观众
在例6的基础上
#!/bin/bash #定义变量 phone=/shell03/phonenum.txt #循环抽出5位幸运观众 for ((i=1;i<=5;i++)) do #定位幸运观众所在行号 line=`wc -l $phone |cut -d' ' -f1` luck_line=$[RANDOM%$line+1] #取出幸运观众所在行的电话号码 luck_num=`head -$luck_line $phone|tail -1` #显示到屏幕 echo "139****${luck_num:7:4}" echo $luck_num >> luck.txt #删除已经被抽取的幸运观众号码 #sed -i "/$luck_num/d" $phone done
#!/bin/bash for ((i=1;i<=5;i++)) do file=phonenum.txt line=`cat phonenum.txt |wc -l` 1000 luckline=$[$RANDOM%$line+1] phone=`cat $file|head -$luckline|tail -1` echo "幸运观众为:139****${phone:7:4}" done
#!/bin/bash # choujiang phone=phonenum.txt for ((i=1;i<=5;i++)) do num=`wc -l phonenum.txt |cut -d' ' -f1` line=`echo $[$RANDOM%$num+1]` luck=`head -$line $phone |tail -1` sed -i "/$luck/d" $phone echo "幸运观众是:139****${luck:7:4}" done
例8:打印乘法表
#!/bin/bash for ((y=1;y<=9;y++)) do for ((x=1;x<=$y;x++)) do echo -ne "$x*$y=$[$x*$y]\t" done echo echo done
#!/bin/bash y=1 while [ $y -le 9 ] do x=1 while [ $x -le $y ] do echo -ne "$x*$y=$[$x*$y]\t" let x++ done echo echo let y++ done
```powershell #!/bin/bash for i in `seq 9` do for j in `seq $i` do echo -ne "$j*$i=$[$i*$j]\t" done echo echo done
例9:模拟一个多任务维护界面,当执行程序时先显示总菜单,然后根据选择后作出对应的操作
#!/bin/bash
#打印菜单
cat <<-EOF
h 显示命令帮助
f 显示磁盘分区
d 显示磁盘挂载
m 查看内存使用
u 查看系统负载
q 退出程序
EOF
#让用户输入需要的操作
while true
do
read -p “请输入需要操作的选项[f|d]:” var1
case $var1 in
h)
cat <<-EOF
h 显示命令帮助
f 显示磁盘分区
d 显示磁盘挂载
m 查看内存使用
u 查看系统负载
q 退出程序
EOF
;;
f)
fdisk -l
;;
d)
df -h
;;
m)
free -m
;;
u)
uptime
;;
q)
exit
;;
esac
done
```powershell #!/bin/bash #打印菜单 menu(){ cat <<-END h 显示命令帮助 f 显示磁盘分区 d 显示磁盘挂载 m 查看内存使用 u 查看系统负载 q 退出程序 END } menu while true do read -p "请输入你的操作[h for help]:" var1 case $var1 in h) menu ;; f) read -p "请输入你要查看的设备名字[/dev/sdb]:" var2 case $var2 in /dev/sda) fdisk -l /dev/sda ;; /dev/sdb) fdisk -l /dev/sdb ;; esac ;; d) lsblk ;; m) free -m ;; u) uptime ;; q) exit ;; esac done
例10: 写一个脚本收集用户输入的基本信息(姓名,性别,年龄),如不输入一直提示输入,最后根据用户的信息输出相对应的内容
#!/bin/bash #该函数实现用户如果不输入内容则一直循环直到用户输入为止,并且将用户输入的内容打印出来 input_fun() { input_var="" output_var=$1 while [ -z $input_var ] do read -p "$output_var" input_var done echo $input_var } input_fun 请输入你的姓名: 或者 #!/bin/bash fun() { read -p "$1" var if [ -z $var ];then fun $1 else echo $var fi } #调用函数并且获取用户的姓名、性别、年龄分别赋值给name、sex、age变量 name=$(input_fun 请输入你的姓名:) sex=$(input_fun 请输入你的性别:) age=$(input_fun 请输入你的年龄:) #根据用户输入的性别进行匹配判断 case $sex in man) if [ $age -gt 18 -a $age -le 35 ];then echo "中年大叔你油腻了吗?加油" elif [ $age -gt 35 ];then echo "保温杯里泡枸杞" else echo "年轻有为。。。" fi ;; woman) xxx ;; *) xxx ;; esac
这篇关于shell编程(四)脚本实例的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-10SpringBoot 内部方法调用,事务不起作用的原因及解决办法
- 2024-11-10独立开发者 5 个月,月收入赶超北京工资,我的一点心得
- 2024-11-09程序员 SEO 系列:如何找到更多搜索关键词?
- 2024-11-09为何选择Spring AI Alibaba开发智能客服平台?
- 2024-11-09Sentinel不同的流控效果资料详解
- 2024-11-09Sentinel配置限流资料:新手入门教程
- 2024-11-09Sentinel配置限流资料详解
- 2024-11-09Sentinel熔断规则配置资料详解
- 2024-11-08Sentinel熔断规则配置资料详解
- 2024-11-08Sentinel限流资料入门教程