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