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