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

说明

 -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之间的随机数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值