パスワードを生成する

#!/bin/sh
#mkpasswd.sh [文字数]

len=$1
[ -z $len ] && len="8"
char='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!#%&()-=^~\@<>?/+*;:_'
i=1
while [ $i -le $len ]; do
    #1以上charの文字数以下の乱数を得る
    dm=$(( ( $RANDOM % ${#char} ) + 1 ))
    #charの中からdm文字目の文字を取り出す
    str="${str}${char:${dm}:1}"
    i=$(( $i+1 ))
done

echo $str
$ ./mkpasswd.sh 
:C)i;rv6