Linux之纯shell实现输出随机字符串

  • 2
  • 11,165 次
摘要

shell中说到生产随机都会想到random urandom这些东西了,这里来一次不借助random UUID MD5等来实现生成,其实这也是我面试题我自己将它扩展了下而已。因为是shell实现的且我不懂什么算法等高大上的东西,所以这个脚本只是为了开拓视野,因为此脚本毫无性能而言,随机个8位出来估计有可能用上万次循环。。。请大神来给我升级或者更好的思路

Linux之纯shell实现输出随机字符串
Linux之纯shell实现输出随机字符串

#!/bin/bash
#########################################################################
# File Name: random.sh
# Author: LookBack
# Email: admin#dwhd.org
# Version:
# Created Time: 2015年08月27日 星期四 22时27分48秒
#########################################################################

[ -z $1 ] && exit
a="1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
#random1
random_b() {
	b=$(eval echo \${a$(date +%N | egrep -o '.{2}$' | sed 's/./:&:/')})
}
random_c() {
	while true; do
		[ $[sum%2] = 0 ] && a=`rev <<<$a`
		random_b && [ ${#b} -le 20 ] && echo "$b" && break
		let sum++
	done
}

#random2
d=`eval $(printf "%-20s\n" "random_c" | sed 's/\s/ \&\&&random_c/g') | paste -s -d ''`
random_d() {
	e=$(eval echo \${d$(date +%N | egrep -o '.{2}$' | sed 's/./:&:/')})
}
random_f() {
	while true; do
		[ $[sumb%2] = 0 ] && d=`rev <<<$d`
		random_d && [ ${#e} = 2 ] && echo "$e" && break
		let sumb++
	done
}

#random3
g=`eval $(printf "%-20s\n" "random_f" | sed 's/\s/ \&\&&random_f/g') | paste -s -d ''`
random_h() {
	i=$(eval echo \${g$(date +%N | egrep -o '.{2}$' | sed 's/./:&:/')})
}
random_j() {
	while true; do
		[ $[sumc%2] = 0 ] && g=`rev <<<$g`
		random_h && [ ${#i} = $1 ] && echo "$i" && break
		let sumc++
	done
}

random_j $1
  • 本文由 发表于 2015年8月28日05:33:22
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

评论:2   其中:访客  2   博主  0
    • 上海seo 0

      linux玩的溜的人都是高手啊。。。 :oops: