知道变量 RANDOM的同志应该很熟悉其意义,就是输出一个随机数,如果要求输出一个或多个随机字符呢? 此时结合数组 问题就很好解决了。。。 #!/bin/bash #filename:Make_Random #Usg: sh Make_Random N (几位) array=(1 2 3 4 5 6 7 8 9 0 a b c d e f g h i g k l m \ n o k p r s t u v w x y z A B C D E F G H I \ G K L M N O P K R S T U V W X Y X \@ \! \~ \# \$ \% \^ \ \* \( \) \_ \+ \- \= \| \} \{ \[ \] \< \> \, \. \" \' \:) num=${#array[@]} for ((i=1;i<=$1;i++)) do aa=$[RANDOM%num] number=${array[$aa]} [ $i -ne $1 ]&&echo -n $number||echo $number done ------------------------------------------------- 演示: [iyunv@localhost ~]# sh x 43 51r9BrRR%2ha}(<Kb0fPK19:<VLingYi003 LingYi003.tar.gz x{|rh<sGVy_{TPLEt 思路很明显:定义一个字符数组 然后通过RAMDOM取的一个随机数,通过将其与数组个数的取余操作来获取一个随机的数组。下面写一个通过过滤的方式控制输出数字的大小: #!/bin/bash #每次输出一个数字 while : do Random=$RANDOM if [ $Random -ge 1 ]&&[ $Random -le 39 ];then Number=$Random [ -n $Number ]&&echo $Number&&break fi done ———————————————————————————— [iyunv@localhost ~]# sh x 27 [iyunv@localhost ~]# sh x 37 [iyunv@localhost ~]# sh x 36
|