SHELL基础知识

阅读: 评论:0

SHELL基础知识

SHELL基础知识

1. 如何生成随机数?

系统变量:RANDOM,默认会产生0~32767的随机整数

打印一个随机数
echo $RANDOM
查看系统上一次生成的随机数
# set|grep RANDOM
RANDOM=28325产生0~1之间的随机数
echo $[$RANDOM%2]产生0~2之间的随机数
echo $[$RANDOM%3]产生0~3之间的随机数
echo $[$RANDOM%4]产生0~9内的随机数
echo $[$RANDOM%10]产生0~100内的随机数
echo $[$RANDOM%101]产生50-100之内的随机数
echo $[$RANDOM%51+50]产生三位数的随机数
echo $[$RANDOM%900+100]

实战案例

㈠ 随机产生以139开头的电话号码

具体需求1:

写一个脚本,产生一个文件,随机产生以139开头的手机号1000个,每个一行。

① 思路

  1. 产生1000个电话号码,脚本需要循环1000次 FOR WHILE UNTIL

  2. 139+8位,后8位随机产生,可以让每一位数字都随机产生 echo $[$RANDOM%10]

  3. 将随机产生的数字分别保存到变量里,然后加上139保存到文件里

② 落地实现


#!/bin/env bash
#产生1000个以139开头的电话号码并保存文件
file=/
for ((i=1;i<=1000;i++))
don1=$[$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
# random phonenum
# 循环1000次产生电话号码并保存到文件
for i in {1..1000}
don1=$[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" >> 
done#!/bin/bash
i=1
while [ $i -le 1000 ]
don1=$[$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" >> let i++
donecontinue:继续,跳过本次循环,执行下一次循环
break:打断,执行循环体外的代码do..done外
exit:退出程序#!/bin/bash
for i in {1..1000}
don1=$[$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" >> 
done#!/bin/bash
#create phone num file
for ((i=1;i<=1000;i++))
don1=$[$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" |tee -
done#!/bin/bash
count=0
while true
don1=$[$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" |tee - && let count++if [ $count -eq 1000 ];thenbreakfi
done

㈡ 随机抽出5位幸运观众

具体需求:

  1. 在上面的1000个手机号里抽奖5个幸运观众,显示出这5个幸运观众。

  2. 但只显示头3个数和尾号的4个数,中间的都用*代替

① 思路

  1. 确定幸运观众所在的行 0-1000 随机找出一个数字 $[$RANDOM%1000+1]

  2. 将电话号码提取出来 head -随机产生行号 |tail -1

  3. 显示前3个和后4个数到屏幕 echo 139****

② 落地实现

#!/bin/bash
#定义变量
phone=/
#循环抽出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 >> #删除已经被抽取的幸运观众号码#sed -i "/$luck_num/d" $phone
done#!/bin/bash
file=/
for i in {1..5}
dofile_num=`wc -l $file |cut -d' ' -f1`line=`echo $[$RANDOM%$file_num+1]`luck=`head -n $line  $file|tail -1`echo "139****${luck:7:4}" && echo $luck >> /shell04/
done#!/bin/bash
for ((i=1;i<=5;i++))
do
file&#
line=` |wc -l`	1000
luckline=$[$RANDOM%$line+1]
phone=`cat $file|head -$luckline|tail -1`
echo "幸运观众为:139****${phone:7:4}"
done或者
#!/bin/bash
# choujiang
phone&#
for ((i=1;i<=5;i++))
donum=`wc - |cut -d' ' -f1`line=`echo $[$RANDOM%$num+1]`luck=`head -$line $phone |tail -1`sed -i "/$luck/d" $phoneecho "幸运观众是:139****${luck:7:4}"
done

㈢ 批量创建用户(密码随机产生)

需求:批量创建5个用户,每个用户的密码为一个随机数

① 思路

  1. 循环5次创建用户

  2. 产生一个密码文件来保存用户的随机密码

  3. 从密码文件中取出随机密码赋值给用户

② 落地实现

#!/bin/bash
#crate user and set passwd
#产生一个保存用户名和密码的文件
echo user0{1..5}:itcast$[$RANDOM%9000+1000]#@~|tr ' ' 'n'>> user_pass.file#循环创建5个用户
for ((i=1;i<=5;i++))
douser=`head -$i user_pass.file|tail -1|cut -d: -f1`pass=`head -$i user_pass.file|tail -1|cut -d: -f2`useradd $userecho $pass|passwd --stdin $user
done或者
for i in `cat user_pass.file`
douser=`echo $i|cut -d: -f1`pass=`echo $i|cut -d: -f2`useradd $userecho $pass|passwd --stdin $user
done#!/bin/bash
#crate user and set passwd
#产生一个保存用户名和密码的文件
echo user0{1..3}:itcast$[$RANDOM%9000+1000]#@~|tr ' ' 'n'|tr ':' ' ' >> user_pass.file
#循环创建5个用户
while read user pass
do
useradd $user
echo $pass|passwd --stdin $user
done < user_pass.filepwgen工具产生随机密码:
[root@server shell04]# pwgen -cn1 12
Meep5ob1aesa
[root@server shell04]# echo user0{1..3}:$(pwgen -cn1 12)
user01:Bahqu9haipho user02:Feiphoh7moo4 user03:eilahj5eth2R
[root@server shell04]# echo user0{1..3}:$(pwgen -cn1 12)|tr ' ' 'n'
user01:eiwaShuZo5hi
user02:eiDeih7aim9k
user03:aeBahwien8co

本文发布于:2024-01-31 03:57:28,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170664465025250.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:基础知识   SHELL
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23