shell基础之数组、随机数

1.数组定义方法:

动态定义数组变量,并使用命令的输出结果作为数组的内容

2.数组的打印和输出

1)打印数组元素

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

2)打印元素个数

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

3)数组的赋值

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

4)数组的删除

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

5)数组内容截取和替换

练习:循环输出数组元素

练习:利用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

二、随机数

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

练习:创建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

猜你喜欢

转载自blog.csdn.net/passion_for_life/article/details/85544882
今日推荐