sh シェルスクリプトから乱数を使う
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sh シェルスクリプトから乱数を使う相关的知识,希望对你有一定的参考价值。
#!/bin/sh
ECHO=/bin/echo
if [ -c /dev/urandom ] ;then
$ECHO $((`od -vAn -tu2 -N2 </dev/urandom` % 100 + 100))
elif [ `type openssl > /dev/null; echo $?` -eq 0 ] ;then
$ECHO $((`openssl rand 4 |od -vAn -tu4` % 100 + 100))
elif [ ! -z $RANDOM ] ;then
$ECHO $((RANDOM % 100 + 100))
elif [ `type awk > /dev/null; echo $?` -eq 0 ] ;then
awk 'BEGIN{srand();print int(rand() * 100 + 100)}'
elif [ `type jot > /dev/null; echo $?` -eq 0 ] ;then
jot -r 1 100 200
else
$ECHO "No random generator stuff is found." 1>&2
exit 1
fi
exit 0
#!/bin/sh
# via: http://d.hatena.ne.jp/hycon/20101007/1286450035
# Prevent using shell built-in echo.
ECHO=/bin/echo
title(){
$ECHO -e "\e[0;33m"${1}"\e[0;37m"
}
title 'with shell(e.g. bash, zsh) built-in $RANDOM'
if [ ! -z $RANDOM ] ;then
$ECHO -n " plain output: "
$ECHO ${RANDOM}
$ECHO -n " 100 <-> 200: "
$ECHO $((RANDOM % 100 + 100))
else
$ECHO '$RANDOM doesnt seem to be supported by the shell.'
fi
$ECHO
title "with \`jot\` from BSD\nthat uses random(3) therefore shouldn't use for security application"
type jot > /dev/null && {
$ECHO -n " plain output: "
jot -r 1
$ECHO -n " 100 <-> 200: "
jot -r 1 100 200
} || {
$ECHO '`jot` command is not found.'
$ECHO 'To test `jot` you should run `sudo apt-get install athena-jot`'
$ECHO 'if your system is using apt as a package-manager.'
}
$ECHO
title "with \`/dev/urandom\` that can use for security application"
if [ -c /dev/urandom ] ;then
$ECHO -n " plain output: "
od -vAn -tu2 -N2 </dev/urandom
$ECHO -n " 100 <-> 200: "
echo $((`od -vAn -tu2 -N2 </dev/urandom` % 100 + 100))
else
$ECHO "Your system doesn\'t have \`/dev/urandom\`"
fi
$ECHO
title "with AWK's rand() and srand() \nthat are POSIX compatible and shouldn't use for security application"
type awk > /dev/null && {
$ECHO -n " plain output: "
awk 'BEGIN{srand();print rand()}'
$ECHO -n " 100 <-> 200: "
awk 'BEGIN{srand();print int(rand() * 100 + 100)}'
} || {
$ECHO '`awk` command is not found.'
$ECHO 'To test `jot` you should run `sudo apt-get install athena-jot`.'
}
$ECHO
title "with \`openssl rand\` that can use for security application"
type openssl > /dev/null && {
$ECHO -n " plain output: "
openssl rand 4 |od -vAn -tu4
$ECHO -n " 100 <-> 200: "
echo $((`openssl rand 4 |od -vAn -tu4` % 100 + 100))
} ||{
$ECHO '`openssl` command is not found.'
}
以上是关于sh シェルスクリプトから乱数を使う的主要内容,如果未能解决你的问题,请参考以下文章
sh シェルスクリプトで店员さんについて说明するためのスクリプト
sh ZaifAPIのtradeAPIをシェルスクリプトで叩く
apache_conf シェルスクリプトでYN确认
sh 减价でファイルリスト一覧リンクを作るためのシェルスクリプト(到位桶用)
sh ファイル名に含まれる空白文字をアンダースコアに変更してリネームするシェルスクリプト
text シェルスクリプトで书いた环境変数の反映の仕方