文章目录
- 1、循环ping192.168.110网段的所有主机
- 2、for批量创建用户
- 3、创建存放1-100奇数的数组里
- 创建任意数字及长度的数组,根据客户的需求加入元素
- 4、将一个数组中的所有不够60的提到60
- 5、判断数组中最大的数
- 6、 猜数字游戏
- 7 检测本机当前用户是否为超级管理员,如果是管理员,则使用 yum 安装 vsftpd,如果不是,则提示您非管理员(使用字串对比版本)
- 8编写脚本,实现人机<石头,剪刀,布>游戏
- 9、99乘法表
-
- 10、 100以内的数字求合
- 11、自动调整网络配置
- 12、将脚本设置为开机自启动
- 13、成绩
- 14、输入你想加入的数组元素
- 15、小于60的数组直接unset干掉
- 16、倒直角三角
- 17、 正直角
- 18、平行四边形
- 19、梯形
- 20、等腰三角形
- 21、菱形
- 22、三个人抽奖随机比大小
- 23、 阶乘
- 24、使用函数 判断是否有三个数相乘;如果有,直接乘然后输出,没有的话就退出
- 25、用until 小于50的求合
- 26、冒泡排序法 将数组的序列进行排序
- 27、请输入你的成绩 小于60 不及格 85以上优秀
- 28、为指定用户发送在线消息
- 29、while sleep用法
1、循环ping192.168.110网段的所有主机
代码语言:javascript复制#!/bin/bash
i=1
for i in {
1..254}
do
ping -c 2 -w 3 -i 0.3 192.168.110.$i $> /dev/null
if [ $? -eq 0 ] ;then
echo "192.168.110.$i is yes"
else
echo "192.168.110.$i is no"
fi
let i
done
2、for批量创建用户
代码语言:javascript复制user=$`cat /opt/user.txt`
for i in $user
do
useradd $i
echo "1234" | passwd --stdin $i
done
~
3、创建存放1-100奇数的数组里
代码语言:javascript复制#!/bin/bash
for ((i=0;i<=100;i ))
do
if [ $[$i%2] -eq 1 ] ;then
arr[$[$[$i-1]/2]]=$i
fi
done
echo ${
arr[*]}
创建任意数字及长度的数组,根据客户的需求加入元素
代码语言:javascript复制#!/bin/bash
#创建任意数字及长度的数组,根据客户的需求加入元素
i=0 #数组的下标
while true
do
read -p "是否输入元素(yes/no):" doing
if [ $doing == no ]
then
break
fi
read -p "请存入第$[$i 1]个元素:" key
shuzu[$i]=$key
let i
done
echo ${
shuzu[*]}
4、将一个数组中的所有不够60的提到60
代码语言:javascript复制#!/bin/bash
num=(90 90 90 90 90 90 90 90 20 20)
for ((i=0;i<=9;i ))
do
if [ $[num[$i]] -lt 60 ]
then
num[$i]=60
fi
done
echo ${
num[*]}
5、判断数组中最大的数
代码语言:javascript复制#!/bin/bash
score=(72 63 90 45 75)
temp=0
for ((i=0;i<${
#score[*]};i ))
do
if [ ${score[$i]} -gt $temp ];then
temp=${
score[$i]}
fi
done
echo $temp
6、 猜数字游戏
代码语言:javascript复制 while :
do
read -p "计算机生成了一个 1‐100 的随机数,你猜: " cai
if [ $cai -eq $num ]
then
echo "恭喜,猜对了"
exit
elif [ $cai -gt $num ]
then
echo "Oops,猜大了"
else
echo "Oops,猜小了"
fi
done
7 检测本机当前用户是否为超级管理员,如果是管理员,则使用 yum 安装 vsftpd,如果不是,则提示您非管理员(使用字串对比版本)
代码语言:javascript复制if [ $USER == "root" ]
then
yum ‐y install vsftpd
else
echo "您不是管理员,没有权限安装软件"
fi
#!/bin/bash
8编写脚本,实现人机<石头,剪刀,布>游戏
代码语言:javascript复制game=(石头 剪刀 布)
num=$[RANDOM%3]
computer=${
game[$num]}
# 通过随机数获取计算机的出拳
#出拳的可能性保存在一个数组中,game[0],game[1],game[2]分别是 3 中不同的可能
echo "请根据下列提示选择您的出拳手势"
echo "1.石头"
echo "2.剪刀"
echo "3.布"
read -p "请选择 1‐3:" person
case $person in
1)
if [ $num -eq 0 ]
then
echo "平局"
elif [ $num -eq 1 ]
then
echo "你赢"
else
echo "计算机赢"
fi;;
2)
if [ $num -eq 0 ]
then
echo "计算机赢"
elif [ $num -eq 1 ]
then
echo "平局"
else
echo "你赢"
fi;;
3)
if [ $num -eq 0 ]
then
echo "你赢"
elif [ $num -eq 1 ]
then
echo "计算机赢"
else
echo "平局"
fi;;
*)
echo "必须输入 1‐3 的数字"
esac
9、99乘法表
代码语言:javascript复制#!/bin/bash
# 9*9 乘法表(编写 shell 脚本,打印 9*9 乘法表)
for i in `seq 9`
do
for j in `seq $i`
do
echo -n "$j*$i=$[i*j] "
done
echo
done
#!/bin/bash
10、 100以内的数字求合
代码语言:javascript复制# 对 100 以内的所有正整数相加求和(1 2 3 4... 100)
#seq 100 可以快速自动生成 100 个整数
sum=0
for i in `seq 100`
do
sum=$[sum i]
done
echo "总和是:$sum"
11、自动调整网络配置
代码语言:javascript复制#!/bin/bash
#chkconfig: 35 80 90
#开机启动ip地址调整
ip=www.baidu.com
ping -c 2 $ip &>/dev/null
if [ $? -eq 0 ]
then
echo "百度没问题"
else
echo "请主人稍等,我正在更改你的网卡"
sed -ri '/^IPADDR=/cIPADDR=192.168.110.132' /etc/sysconfig/network-scripts/ifcfg-ens33
sed -ri '/^GATEWAY=/cGATEWAY=192.168.110.2' /etc/sysconfig/network-scripts/ifcfg-ens33
sed -ri '/^DNS1=/cDNS1=8.8.8.8' /etc/sysconfig/network-scripts/ifcfg-ens33
echo "网卡配置文件已改完 正在重启网络服务"
systemctl restart network
fi
ping -c 2 $ip &>/dev/null
if [ $? -eq 0 ] ;then
echo "主人,一切准备就绪"
else
echo "请检查你绑定的网卡是不是vm8"
fi
12、将脚本设置为开机自启动
代码语言:javascript复制1. 编写脚本luzy.sh,脚本内容如下:
#!/bin/sh
#chkconfig: 35 80 90
#description:开机自动启动的脚本程序
echo "设置开机自启"
echo "启动完毕"
1
2
3
4
5
6
7
脚本第一行 “#!/bin/sh” 告诉系统使用的shell;
脚本第二行 “#chkconfig: 35 80 90” 表示在3/5运行级别启动,启动序号(S80),关闭序号(K90);
脚本第三行 表示的是服务的描述信息
注意: 第二行和第三行必写,负责会出现如“服务 luzy.sh 不支持 chkconfig”这样的错误。
2. 将写好的luzy.sh脚本移动到/etc/init.d/目录下
3. 给脚本赋可执行权限
cd /etc/init.d/
chmod x luzy.sh
1
2
4. 添加脚本到开机自动启动项目中
chkconfig --add luzy.sh
chkconfig luzy.sh on
1
2
到这里就设置完成了,我们只需要重启一下我们的服务器,就会执行脚本
13、成绩
代码语言:javascript复制case $score in
8[5-9]9[0-9]|100)
echo "成绩优秀"
;;
7[0-9]8[0-4])
echo "成绩良"
;;
6[0-9])
echo "成绩合格"
;;
$[ 是运算]
14、输入你想加入的数组元素
代码语言:javascript复制#!/bin/bash
arr(){
read -p "请输入你想要加入的元素:" n
echo $n >> /opt/text1.txt
list=`cat /opt/text1.txt`
num=($list)
echo "数组中的元素:${num[*]}"
}
while :
do
read -p "请问您想要加入元素吗?[Y/N]: " add
if [ "$add" == "Y" ]
then
arr
elif [ "$add" == "N" ]
then
echo "数组中所有的元素为:${num[*]},再见!"
break
fi
done
15、小于60的数组直接unset干掉
代码语言:javascript复制#!/bin/bash
num=(89 76 54 34 23)
i=0
for p in ${num[*]}
do
if [ $p -lt 60 ];then
unset num[$i]
fi
let i
done
echo ${num[*]}
~
16、倒直角三角
代码语言:javascript复制#!/bin/bash
read -p "输入数" p
for ((i=1;i<=$p;i ))
do
for ((o=$i;o<$p;o ))
do
echo -n "*"
done
echo ""
done
代码语言:javascript复制#!/bin/bash
read -p "输入数" p
for ((i=$p;i>0;i--))
do
for ((o=$i;o>0;o--))
do
echo -n "*"
done
echo ""
done
17、 正直角
代码语言:javascript复制#!/bin/bash
read -p "输入数" p
for ((i=1;i<=$p;i ))
do
for ((o=$i;o>0;o--))
do
echo -n "*"
done
echo ""
done
18、平行四边形
代码语言:javascript复制read -p "输入数" p
for ((i=1;i<=$p;i ))
do
for ((o=$i;o>0;o--))
do
echo -n " "
done
for ((j=1;j<=$p;j ))
do
echo -n "*"
done
echo ""
done
19、梯形
代码语言:javascript复制 #!/bin/bash
read -p "输入数" p
for ((i=1;i<=$p;i ))
do
for ((o=$i;o<$p;o ))
do
echo -n " "
done
for ((j=$i 1;j>=0;j--))
do
echo -n "* "
done
echo ""
done
20、等腰三角形
代码语言:javascript复制#!/bin/bash
read -p "输入数" p
for ((i=1;i<=$p;i ))
do
for ((o=$i;o<$p;o ))
do
echo -n " "
done
for ((j=$i-1;j>=0;j--))
do
echo -n "* "
done
echo ""
done
21、菱形
代码语言:javascript复制read -p "输入数" p
for ((i=1;i<=$p;i ))
do
for ((o=$i;o<$p;o ))
do
echo -n " "
done
for ((j=$i-1;j>=0;j--))
do
echo -n "* "
done
echo ""
done
for ((i=1;i<=$p-1;i ))
do
for ((o=$i;o>0;o--))
do
echo -n " "
done
for ((j=$i;j<=$p-1;j ))
do
echo -n "* "
done
echo ""
done
22、三个人抽奖随机比大小
代码语言:javascript复制#!/bin/bash
s0=`cat /opt/name.txt | grep "shangzhen"`
s1=`cat /opt/name.txt | grep "shengjie" `
s2=`cat /opt/name.txt | grep "shanannan"`
a=0
b=0
c=0
for ((i=1;i<=10;i ))
do
suiji=$[$RANDOM%3]
if [ $suiji -eq 0 ];then
a=$[$a 1]
echo "$s0的票数为$a"
elif [ $suiji -eq 1 ];then
b=$[$b 1]
echo "$s1的票数为$b"
elif [ $suiji -eq 2 ];then
c=$[$c 1]
echo "$s2的票数为$c"
fi
done
echo $a $b $c
23、 阶乘
代码语言:javascript复制#!/bin/bash
read -p "请输入你想要的阶乘" p
jiecheng=1
for ((i=1;i<=$p;i ))
do
jiecheng=$[jiecheng*i]
done
echo $jiecheng
24、使用函数 判断是否有三个数相乘;如果有,直接乘然后输出,没有的话就退出
代码语言:javascript复制if [ $# -ne 3 ] ; then
echo "`basename $0` par1 par2 par3 "
exit
fi
fun3() {
echo $(($1 * $2 * $3))
}
fun3 $1 $2 $3
25、用until 小于50的求合
代码语言:javascript复制i=1
sum=0
until [ $i -gt 50 ]
do
let sum =$i
let i
done
echo $sum
26、冒泡排序法 将数组的序列进行排序
1、可以采用冒泡排序的方式。 2、双层循环,外层控制把数组中每一个元素都取出来,内层循环采用当前元素和向后的数组元素比大小,最小的值和当前元素交换的方式 3、输入成绩这一块,因为数组已经有序了,只要拿输入元素和数组中元素相比,如果数组中元素大于当前输入元素,记住当前位置,当前位置数组后面的元素都向后移一位。
代码语言:javascript复制#!/bin/bash
arr=(53 100 86 92 86 55 65 76 56 59)
#冒泡排序
for ((i=0;i<${
#arr[*]};i ))
do
for ((j=i 1;j<${
#arr[@]};j ))
do
if [[ ${arr[i]} -gt ${
arr[j]} ]] ; then
max=${
arr[i]}
arr[i]=${
arr[j]}
arr[j]=$max
fi
done
done
echo ${
arr[*]}
read -p "请输入成绩:" sum
for ((i=0;i<${
#arr[*]};i ))
do
if [[ ${arr[i]} -gt $sum ]] ; then
tmp=$i
break
fi
done
for ((j=${
#arr[*]};j>i;j--))
do
arr[j]=${
arr[j-1]}
done
arr[i]=$sum
echo ${
arr[*]}
27、请输入你的成绩 小于60 不及格 85以上优秀
代码语言:javascript复制#!/bin/bash
while :
do
read -p "请输入你的成绩" p
if [[ $p -lt 100 && $p -gt 85 ]];then
echo "你的成绩为优秀"
break
elif [[ $p -lt 85 && $p -ge 60 ]] ;then
echo "你的成绩为一般"
break
elif [ $p -lt 60 ];then
echo "你的成绩没及格"
break
else
echo "你的输入有误,请输入正确的成绩"
fi
done
代码语言:javascript复制#!/bin/bash
read -p "你的成绩是" score
case $score in
8[5-9]|9[0-9]|100)
echo "成绩优秀"
;;
7[0-9]|8[0-4])
echo "成绩良"
;;
6[0-9])
echo "成绩合格"
;;
[0-5][0-9])
echo "没及格"
;;
*)
echo "滚犊子"
esac
28、为指定用户发送在线消息
若指定用户不在线(未登陆系统),则每10分钟(实验中为了测试效果,可改为3s)试一次,直至用户登录系统后再发送信息 用户名与消息通过为止参数传递给脚本
代码语言:javascript复制#!/bin/bash
username=$1
#判断格式参数是否为空
if [ $# -lt 1 ]
then
echo "Usage:`basename $0` <username> [<message>]"
exit 1
fi
#判断账号是否存在
if grep "^$username:" /etc/passwd &> /dev/nell;then :
else
echo "用户不存在"
exit 2
fi
#判断用户是否在线
until who | grep "$username" &> /dev/null
do
echo "用户不在线,正在尝试连接"
sleep 3
done
mes=$*
echo "$mes" | write "$username"
29、while sleep用法
每等一秒,进行循环一次 直到循环结束
代码语言:javascript复制#!/bin/bash
n=1
while (( $n <= 10 ))
do
echo $n
(( n ))
sleep 1
done
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/186250.html原文链接:https://javaforall.cn