- 论坛徽章:
- 0
|
[请教]如何随机的生成一个字符串?[请教]
本帖最后由 rdcwayx 于 2014-09-04 14:54 编辑
- #!/bin/bash
- # May need to be invoked with #!/bin/bash2 on older machines.
- #
- # Random password generator for bash 2.x by Antek Sawicki <tenox@tenox.tc>,
- # who generously gave permission to the document author to use it here.
- #
- # ==> Comments added by document author ==>
- MATRIX="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
- LENGTH="8"
- # ==> May change 'LENGTH' for longer password, of course.
- while [ "${n:=1}" −le "$LENGTH" ]
- # ==> Recall that := is "default substitution" operator.
- # ==> So, if 'n' has not been initialized, set it to 1.
- do
- PASS="$PASS${MATRIX:$(($RANDOM%${#MATRIX})):1}"
- # ==> Very clever, but tricky.
- # ==> Starting from the innermost nesting...
- # ==> ${#MATRIX} returns length of array MATRIX.
- # ==> $RANDOM%${#MATRIX} returns random number between 1
- # ==> and length of MATRIX − 1.
- # ==> ${MATRIX:$(($RANDOM%${#MATRIX})):1}
- # ==> returns expansion of MATRIX at random position, by length 1.
- # ==> See {var:pos:len} parameter substitution in Section 3.3.1
- # ==> and following examples.
- # ==> PASS=... simply pastes this result onto previous PASS (concatenation).
- # ==> To visualize this more clearly, uncomment the following line
- # ==> echo "$PASS"
- # ==> to see PASS being built up,
- # ==> one character at a time, each iteration of the loop.
- let n+=1
- # ==> Increment 'n' for next pass.
- done
- echo "$PASS" # ==> Or, redirect to file, as desired.
- exit 0
复制代码 |
|