您的位置:首页 > 运维架构 > Shell

shell实例(八) ---指定变量类型:使用declare或typeset,随机数

2011-03-09 16:50 796 查看
说明

-r 只读

declare -r var1

-i 整型

declare -i var1

-a 数组

declare -a indices

-f 函数

declare -f function_name

-x export 作为环境变量,被导出

-x var=$value 声明变量时,同时赋值

1.使用declare来指定变量类型

#! /bin/sh
func1 () {
echo This is a function.
}

declare -f

echo

declare -i var1
var1=2367
echo "var1 declared as $var1"
var1=var1+1
echo "var1 incremented by 1 $var1."
echo "Attempting to change var1 to floating point value,2367.1."
var1=2367.1
echo "var1 is still $var1"

echo

declare -r var2=13.36
echo "var2 declared as $var2"

var2=13.134
echo "var2 is still $var2"

exit 0
~

2.间接引用

#! /bin/sh
a=letter_of_alphabet
letter_of_alphabet=z
echo
echo "a = $a"
eval a=/$$a
echo "Now a = $a"
echo

t=table_cell_3
table_cell_3=24
echo "/"table_cell_3/" = $table_cell_3"
echo -n "dereferenced /"t/" = "; eval echo /$$t

echo
t=table_cell_3
NWE_VAL=387
table_cell_3=$NWE_VAL
echo "Changed value of /"table_cell_3/" to $NEW_VAL."
echo "/"table_cell_3/" now $table_cell_3"
echo -n "dereferenced /"t/" now "; eval echo /$$t

echo
exit 0

3.传一个间接引用给awk

#! /bin/sh
ARGS=2
E_WRONGARGS=65

if [ $# -ne "$ARGS" ]
then
echo "Uage: `basename $0` filename column-number"
exit $E_WRONGARGS
fi

filename=$1
column_number=$2
awk " {
total += /$${column_number}
}
end {
print total
} ----------????
" "$filename"

exit 0

4.$RANDOM:产生随机整数

#! /bin/sh
MAXCOUNT=10
count=1

echo
echo "$MAXCOUNT random numbers:"
echo "-------------------------"
while [ "$count" -le $MAXCOUNT ]
do
number=$RANDOM
echo $number
let "count += 1"
done
echo "----------------------"

RANGE=500
echo
number=$RANDOM
let "number %= $RANGE"
echo "Random number less than $RANGE ---- $number"
echo

FLOOR=200
number=0
while [ "$number" -le $FLOOR ]
do
number=$RANDOM
done
echo "Random number greater than $FLOOR ----- $number"
echo

number=0
while [ "$number" -le $FLOOR ]
do
number=$RANDOM
let "number %= $RANGE"
done

echo "Random number between $FLOOR and $RANGE ---- $number"
echo

BINARY=2
T=1
number=$RANDOM
let "number %= $BINARY"
if [ "$number" -eq $T ]
then
echo "TRUE"
else
echo "FALSE"
fi

echo

SPOTS=6
die1=0
die2=0
let "die1 = $RANDOM % $SPOTS + 1"
let "die2 = $RANDOM % $SPOTS + 1"
echo "die1 = $die1"
echo "die2 = $die2"
let "throw = $die1 + $die2"
echo "Throw of the dice = $throw"
echo

exit 0

5.从一副扑克牌中取出一张随机的牌

#! /bin/sh
Suites="Clubs
Diamonds
Hearts
Spades"

Denominations="2
3
4
5
6
7
8
9
10
Jack
Queen
King
Ace"
suite=($Suites) ----读入一个数组
denomination=($Denominations)
num_suites=${#suite[*]} ------计算有多少个数组元素
num_denominations=${#denomination[*]}
echo -n "${denomination[$((RANDOM%num_denominations))]} of "
echo ${suite[$((RANDOM%num_suites))]}

exit 0

rnumber=$(((RANDOM%(max-min+divisibleBy))/divisibleBy*divisibleBy+min ----返回max,min之间的随机数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐