shell运算符

  • 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中独有  在脚本优化中使用
      • 特点:代码精简,逻辑不好理解

举个栗子:

原文地址:https://www.cnblogs.com/jxdong116/p/6196120.html