在bash中,如果定义:A=3
此时A既可以当做字符串使用也可以当做数字使用
在ksh中,如果定义:A=3
则A只能当做变字符串使用
一种比较通用的方法就是使用typeset:
typeset –I A=0
此外在ksh中typeset还用很多参数可用:
1:typeset
将显示所有变量
2:typeset的-u选项可以将一个变量的字符变成大写
/home/lee#typeset -u var=abc
/home/lee#echo $var
ABC
3:typeset的-l选项将一个变量的字符变成小写
/home/lee#typeset -l var=ABC
/home/lee#echo $var
abc
4:typeset的-L选项把变量变成一个左对齐的4个字符串,有些像字符串截取 :-)
/home/lee#typeset -L4 var=abcdefg
/home/lee#echo $var
abcd
5:typeset的-R选项把变量变成一个右对齐的4个字符串
/home/lee#typeset -R4 var=abcdefg
/home/lee#echo $var
defg
6:typeset的-Z选项把串变成一个空填充,占15个字符位的串,冒号用来保护空白符
/home/lee#typeset -Z15 var="abc ddd"
/home/lee#echo "$var"
^^^^^^^^abc ddd #^为空白
/home/lee#typeset -LZ15 var="abc 123"
/home/lee#echo "$var$var"
abc 123 abc 123
7:变量n是一个被设置成一个整数的变量,typeset命令将整数n前面补齐0,共15个字符位
/home/lee#typeset -i n=24
/home/lee#typeset -Z15 n
/home/lee#echo $n
000000000000024
8:变量answer被给定一个值--Yes并变成一个小写,左对齐,一个字符的串
/home/lee#typeset -lL1 answer=Yes
/home/lee#echo $answer
y
typeset其他用法:
typeset -i num #强制num为一个整数,如:
/home/lee#typeset -i num=10
/home/lee#echo $num
10
/home/lee#typeset -i16 num=10
/home/lee#echo $num
16#a
/home/lee#typeset -i2 num=10
/home/lee#echo $num
2#1010
/home/lee#typeset -i8 num=10
/home/lee#echo $num
8#12
typeset -x #显示被导出的变量
typeset a b c #如果在一个函数里定义,则把a b c创建为局部变量
typeset -r x=var#设置一个只读变量