1、declare命令shell变量为弱类型,默认为字符串类型。declare命令可以为变量设置或取消类型1.语法declare[-/+][选项][变量名]2.选项-:设置变量的类型属性+:取消变量的类型属性-a:声明变量为数组类型(array)-i:声明变量为整数类型(integer)-x:声明变量为环境变量-r:声明变量为只读变量-p:显示指定变量的声明类型3.声明变量为数值类型declare-i[变量名][root~]#a=1[root~]#b=2[root~]#declare-ic=$a+$b[root~]#echo$c3[root~]#declare-pcdeclare-ic="3"4.声明数组变量定义一个数组arrayname[n]=valuedeclare-aarrayname[n]=value注意n只能是anumberviewarray${arrayname}:查看数组的第一个元素,即array[0]的值${Arrayname[n]}:n为数字,查看数组中指定下标的值array${arrayname[*]}:检查数组中的所有值deletearray删除数组中指定下标的值unsetarrayname[n]删除整个数组unsetarrayname实例定义数组下标[2]和下标[3],并没有定义下标[0][root~]#array[2]=2[root~]#declare-aarray[3]=3View数组的第一个元素,即array[0]的值,因为没有,所以输出为空[root~]#echo${array}查看数组下标的值[3][root~]#echo${array[3]}3查看数组中所有的值[root~]#echo${array[*]}23定义数组下标[0]的值并输出[root~]#array[0]=0[root~]#echo${array}0[root~]#echo${array[*]}023删除数组下标[3][root~]#unsetarray[3][root~]#echo${array[*]}02删除整个数组[root~]#unsetarray[root~]#echo${array[*]}5.声明环境变量export变量名=变量值declare-x变量名=变量值6.声明变量只读属性具有只读属性的变量不能被修改、删除,甚至取消!实例声明变量只读属性[root~]#declare-rvar="Iamareadonlyvariable"不可修改[root~]#var=change-bash:var:readonly变量不可删除[root~]#unsetvar-bash:unset:var:cannotunset:readonlyvariable不能取消只读属性[root~]#declare+rvar-bash:declare:var:readonlyvariable7.查询变量的属性查询所有变量的属性declare-p查询指定变量的属性declare-p[变量名]instance[root~]#declare-pdeclare--BASH="/bin/bash"...省略。..declare-irUID="0"declare-xUSER="root"declare-xUSERNAME="root"[root~]#declare-pBASHdeclare--BASH="/bin/bash"[root~]#declare-pPATHdeclare-xPATH="/sbin:/bin:/usr/sbin:/usr/bin"二、数值计算方法1.declare-isum=$num1+$num2[root~]#num1=1[root~]#num2=2[root~]#declare-isum=$num1+$num2[root~]#echo$sum32.exprexpr用法sum=$(expr$num1+$num2)[root~]#num1=1[root~]#num2=2[root~]#sum=$(expr$num1+$num2)[root~]#echo$sum3expr运算符必须有空格,否则:[root~]#sum=$(expr$num1+$num2)[root~]#echo$sum1+23.letlet用法let[变量名]=[运算公式][root~]#让苏m=$num1+$num2[root~]#echo$sum3[root~]#letnum=(1+2)*3/4+5[root~]#echo$num74.$((表达式))or$[运算表达式](常用)$((运算表达式))[root~]#a=1[root~]#b=2[root~]#c=$(($a+$b))[root~]#echo$c3运算符也可以在中间加一个空格[root~]#c=$(($a+$b))[root~]#echo$c3$[operational表达式][root~]#c=$[$a+$b][root~]#echo$c3运算符中间也可以加一个空格[root~]#c=$[$a+$b][root~]#echo$c35。运算符优先级运算运算符按照优先级从高到低排序-,+一元负,一元正!,~逻辑非,按位取反或补码*,/,%乘法,除法,余数+,-加法,减法<<,>>按位左移,按位右移<,>,<=,>=小于,大于小于、小于或等于、大于或等于==、!=等于、不等于&按位和^按位不同OR|按位OR&&逻辑AND||逻辑OR=,+=,-=,*=,/=,%=,&=,^=,|=,<<=,>>=赋值、运算和赋值相同优先级,有括号从左到右计算,先计算括号内的。实例加。减法、乘法、除法、余数、括号[root~]#a=$((4+5*3/2))[root~]#echo$a11[root~]#b=$(((4+5)*3/2))[root~]#echo$b13[root~]#c=$(((4+5)*3%5))[root~]#echo$c2[root~]#d=$(((4+5)*3/(2+1)))[root~]#echo$d9按位AND[root~]#e=$((1&0))[root~]#echo$e0按位或[root~]#f=$((1|0))[root~]#echo$f1按位异或[root~]#g=$((1^2))[root~]#echo$g33.变量测试变量测试一般用于脚本优化。格式复杂多样,语法简单。1.变量测试表2.示例以变量测试表的第一行{x=${y-n}}为例。当变量y未设置时,x=n[root~]#unsety[root~]#x=${y-1}[root~]#echo$x1当变量y为空时,x=empty[root~]#y=''[root~]#x=${y-1}[root~]#当echo$x变量y有值时,x=$y[root~]#y=2[root~]#x=${y-1}[root~]#echo$x2
