一、运算符

- 弱类型,并且默认是字符串类型

1. declare命令

1.1 declare命令
- 用来声明变量类型
- declare[+/-][选项]变量名
选项 含义
- 给变量设定类型属性
+ 取消变量的类型属性
-a 将变量声明为数组类型
-i 将变量声明为整数型(integer)
-x 将变量声明为环境变量
-r 将变量声明为只读变量
-p 显示指定变量的被声明的类型
    //声明成整型
    # a=1
    # b=2
    # c=$a+$b
    # echo $c
    1+2
    # declare -i c=$a+$b
    # echo $c
    3
    # declare +i c
    # c=$a+$b
    # echo $c
    1+2
    # declare -p c
    declare -i c="3"

    //声明环境变量
    # declare -x kk=1
    # bash
    # set | grep kk

    //只读
    # declare -r x
    # x=2
1.2 数组
    ames[0]=zhangsan
    names[1]=lisi
    # 声明为数组类型
    declare -a names;
    # 默认只打印第一个元素
    echo ${names}
    zhangsan
    打印第2个元素
    # echo ${names[1]}
    lisi
    # 打印全部
    echo ${names[*]}
    zhangsan lisi

1.3 声明环境变量
- export最终执行的是declare -x 命令
- declare -p 可以查看所有类型
    export NAME=zhufeng//就相当于下面的命令
    declare -x NAME=zhufeng

1.4 只读属性
    #declare -r gender=m
    #gender=f
    -bash: gender: readonly variable
1.5 查询变量属性
- declare -p 查询所有变量的属性
- declare -p 变量名 查询指定变量的属性
    - 注意,如果是字符串类型,那么类型会写成--

2.数值运算的方法

- 只要用declare声明变量的时候指定类型就可以进行数值运算
2.1 expr 或 let
- +号两侧必须使用空格,否则还是整块输出
    #num1=2
    #num2=3
    #s=$(expr $num1 + $num2)
    #echo $s
    5

    #s=$(($num1+$num2))
    #echo $s
    5
    #s=$[$num1+$num2]
    #echo $s
    5

    d=$(date)
    echo $d
2.2 运算符优先级
【linux】shell之运算符_shell变量声明