shell基础之数组、随机数

1.数组定义方法:

shell基础之数组、随机数_第1张图片

动态定义数组变量,并使用命令的输出结果作为数组的内容shell基础之数组、随机数_第2张图片

2.数组的打印和输出

1)打印数组元素
shell基础之数组、随机数_第3张图片

*和@符表示打印所有元素,打印某个元素取其下标即可,数组下标从0开始

2)打印元素个数

echo ${#array[*]}  |  echo ${#array[@]}

3)数组的赋值

shell基础之数组、随机数_第4张图片

注意:如果下标不存在,则自动添加一个新的元素,如果存在,则覆盖原来的值

4)数组的删除

shell基础之数组、随机数_第5张图片

指定下标即删除某个元素,不指定删除整个数组,注意当指定下标元素删除后,其位置之后元素下标并不会改变

5)数组内容截取和替换

shell基础之数组、随机数_第6张图片shell基础之数组、随机数_第7张图片

练习:循环输出数组元素

shell基础之数组、随机数_第8张图片shell基础之数组、随机数_第9张图片

练习:利用for循环打印下面这句话中字母个数小于6的单词
I am westos teacher welcome to westos training class

#!/bin/bash array=(I am westos tescher welcome to westos training class) ##定义数组元素 
for ((i=0;i<${#array[@]};i++))     ##循环遍历数组元素 
do
   if [ ${#array[$i]} -lt 6 ];then  ##遍历每个字母,统计数组中每个字母的个数
   echo   ${array[$i]}
fi 
done

shell基础之数组、随机数_第10张图片

二、随机数

shell基础之数组、随机数_第11张图片

RANDOM生成随机数在0~32767之间,openssl rand -base64 40生成随机字符

练习:使用for循环在/westos目录下批量创建10个html文件,其中每个文件需要包含10个随即小写字母加固定字符串westos

#!/bin/bash
Path=/westos   ##文件目录
[ -d "$Path" ] || mkdir -p $Path  ##没有此路径则创建

for i in `seq 10`   ##循环10次
do
    random=$(openssl rand -base64 40 | sed 's/[^a-z]//g' | cut -c 3-12) ##生成64位随机字符串取40位,过滤掉不是以字母开头的再取其3-12位
    touch $Path/${random}_westos.html  ##创建随机数加固定字符串westos的.html文件
done

shell基础之数组、随机数_第12张图片shell基础之数组、随机数_第13张图片

练习:创建10个用户,用户名为westos_{1…10}.密码随机

#!/bin/bash
. /etc/init.d/functions  ##调用系统库函数

user="westos"   ##定义用户名
passfile="/mnt/user.log" ##密码保存文件

for num in `seq -w 10`  ##-w生成数前面补零
do
    pass="`echo $RANDOM | md5sum | cut -c 3-12`" ##随机数再mmd5加密取10位,生成密码
    useradd $user$num &> /dev/null && {           ##创建10个用户
        echo "$pass" | passwd --stdin $user$num &> /dev/null  ##设定密码
        echo -e "user:$user$num\tpasswd:$pass" >> $passfile   ##将密码保存到定义文件
    }

if [ $? -eq 0 ];then  ##判断执行是否成功
    action "$user$num is ok" /bin/true  ##如果建立成功,就输出ok 
else
    action "$user$num is failed" /bin/false  ##失败输出failed
fi
done

shell基础之数组、随机数_第14张图片shell基础之数组、随机数_第15张图片

你可能感兴趣的:(Liunx学习)