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之间的随机数
-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之间的随机数
相关文章推荐
- shell 知识点补充(1)-提示字符的设定/read/declare / typeset/变量设定功能/别名/万用字符与特殊符号
- mysql变量定义(declare,set,@)使用实例讲解
- Linux学习- declare / typeset 声明变量类型与属性
- 高级Bash脚本编程指南(12):指定变量的类型: 使用declare或者typeset
- python不使用type(obj) is **来判断变量的类型
- linux 中 set,env,export,declare显示shell变量的区别
- 使用eclipse JDT compile class,解决 无法确定 X 的类型参数;对于上限为 X,java.lang.Object 的类型变量 X,不存在唯一最大实例
- 建议35:使用default为泛型类型变量指定初始值
- Ubuntu 14.04 + QT 计算器开发实例1-----全局变量的使用以及double、字符串类型互转
- 使用eclipse JDT compile class,解决 无法确定 X 的类型参数;对于上限为 X,java.lang.Object 的类型变量 X,不存在唯一最大实例
- BASH命令和SHELL脚本总结(18)使用ACK在指定类型的文件中进行查找
- 第二讲实例变量可见度,set/get方法,自定义初始化(代码) 及description的使用
- shell-使用getopts指定变量取值
- python判断变量类型时,为什么不推荐使用type()方法
- linux 中 set,env,export,declare显示shell变量的区别
- 在创建实例变量的时候用Set,List,Map等接口声明类型而不是用具体的子类声明的原因之代码重构
- pycahrm使用docstrings来指定变量类型、返回值类型、函数参数类型
- linux 中 set,env,export,declare显示shell变量的区别
- OfType 使用LINQ查询动态数组中指定类型的元素
- shell typeset命令的使用