- declare声明变量类型
declare [+/-] [option] variable name
options:
- 给变量设定类型属性
+ 取消变量的类型属性
-a 将变量声明为数组型
-i 将变量声明为整数型 ( integer )
-x 将变量声明为环境变量
-r 将变量声明为只读变量
-p 显示指定变量的被声明的类型
1 ucm@ucm-Aspire-TC-606:~$ a=11 2 ucm@ucm-Aspire-TC-606:~$ b=22 3 ucm@ucm-Aspire-TC-606:~$ declare -i c=$a+$b 4 ucm@ucm-Aspire-TC-606:~$ echo $c 5 33 6 ucm@ucm-Aspire-TC-606:~$ declare -p c 7 declare -i c="33" 8 ucm@ucm-Aspire-TC-606:~$
- 声明数组变量
#定义数组 查看数组
1 ucm@ucm-Aspire-TC-606:~$ movie[0]=zp 2 ucm@ucm-Aspire-TC-606:~$ movie[1]=tp 3 ucm@ucm-Aspire-TC-606:~$ declare -a movie[2]=love 4 ucm@ucm-Aspire-TC-606:~$ echo ${movie} 5 zp 6 ucm@ucm-Aspire-TC-606:~$ echo ${movie[2]} 7 love 8 ucm@ucm-Aspire-TC-606:~$ echo ${movie[*]} 9 zp tp love
- 声明环境变量
declare -x test=123
#和export作用相似,export其实是就是调用的declare -x声明的环境变量
- 声明变量只读属性
declare -r test
#给test赋予只读属性,但是请注意只读属性会让变量不能修改/删除,甚至不能取消只读属性
1 ucm@ucm-Aspire-TC-606:~$ declare -p test 2 declare -x test="123" 3 ucm@ucm-Aspire-TC-606:~$ declare -r test 4 ucm@ucm-Aspire-TC-606:~$ declare -p test 5 declare -rx test="123" 6 ucm@ucm-Aspire-TC-606:~$ test=789 7 bash: test: 只读变量 8 ucm@ucm-Aspire-TC-606:~$ unset test 9 bash: unset: test: 无法取消设定: 只读 variable 10 ucm@ucm-Aspire-TC-606:~$ declare +r test 11 bash: declare: test: 只读变量 12 ucm@ucm-Aspire-TC-606:~$ declare -p test 13 declare -rx test="123" 14 ucm@ucm-Aspire-TC-606:~$
- 查询变量的属性
declare -p
#查询所有变量的属性
declare -p 变量名
#查询制定变量的属性
- 数值运算
方法一 declare -i
方法二 expr或let数值运算工具 变量的+号左右必须要有空格
1 ucm@ucm-Aspire-TC-606:~$ a=44 2 ucm@ucm-Aspire-TC-606:~$ b=55 3 ucm@ucm-Aspire-TC-606:~$ c=$(expr $a + $b) 4 ucm@ucm-Aspire-TC-606:~$ echo $c 5 99 6 ucm@ucm-Aspire-TC-606:~$ c=$(expr $a+$b) 7 ucm@ucm-Aspire-TC-606:~$ echo $c 8 44+55 9 ucm@ucm-Aspire-TC-606:~$
方法三 "$((运算式))" 或 "$[运算式]" 推荐使用"$((运算式))"
1 ucm@ucm-Aspire-TC-606:~$ d=$(($a+$b)) 2 ucm@ucm-Aspire-TC-606:~$ e=$[$a+$b] 3 ucm@ucm-Aspire-TC-606:~$ echo $d 4 99 5 ucm@ucm-Aspire-TC-606:~$ echo $e 6 99 7 ucm@ucm-Aspire-TC-606:~$
逻辑运算
1 ucm@ucm-Aspire-TC-606:~$ f=$((0&&1)) 2 ucm@ucm-Aspire-TC-606:~$ echo $f 3 0 4 ucm@ucm-Aspire-TC-606:~$ g=$((0||1)) 5 ucm@ucm-Aspire-TC-606:~$ echo $g 6 1 7 ucm@ucm-Aspire-TC-606:~$
-
-
- 变量测试 shell中独有 在脚本优化中使用
- 特点:代码精简,逻辑不好理解
-
举个栗子: