和 JavaScript 一样都是弱类型语言,并且默认是字符串类型
declare 命令
declare 命令
-
用来声明变量类型
-
语法:declare [+/-] [选项] 变量名
选项 含义 - 给变量设定类型属性 + 取消变量的类型属性 -a 将变量声明为数组类型 -i 将变量声明为整数型 -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 -i c="3" # 显示指定变量的被声明的类型 declare -p c # declare -i c="3" # 声明环境变量 declare -x kk=1 # 查看所有变量 set | grep kk # 只查看系统变量 env | grep kk # 只读 declare -r x x=2 # bash: x: readonly variable
数组
# 声明为数组类型
declare -a names;
names[0]=zhangsan
names[1]=lisi
# 默认只打印第一个元素
echo ${names}
# zhangsan
# 打印第2个元素
echo ${names[1]}
# lisi
# 打印全部
echo ${names[*]}
# zhangsan lisi
声明环境变量
-
export 最终执行的是 declare -x 命令
-
declare -p 可以查看所有的类型
export NAME=zhangsan # 等价 declare -x NAME=zhangsan
只读属性
declare -r gender=m
gender=f
# -bash: gender: readonly variable
查询变量属性
-
declare -p 查询所有变量的属性
-
declare -p 变量名 查询指定变量的属性
数值运算的方法
只要用declare声明变量的时候指定类型就可以进行数值运算
expr 或 let
num1=2
num2=3
# + 号左右两侧必须有空格,否则还是整块输出
sum=$(expr $num1 + $num2)
echo $sum
# 5
sum2=$(($num1+$num2))
echo $sum2
# 5
sum3=$[$num1+$num2]
echo $sum3
# 5
d=$(date)
echo $d
# 2023年 7月11日 星期二 08时31分41秒 CST
优先级
优先级 | 运算符 | 说明 |
---|---|---|
13 | -、+ | 单目负、单目正 |
12 | !、~ | 逻辑非、按位取反或补码 |
11 | *、/、% | 乘、除、取余 |
10 | +、- | 加、减 |
9 | <<、>> | 按位左移、按位右移 |
8 | <=、>=、<、> | 小于等于、大于等于、小于、大于 |
7 | ==、!= | 等于、不等于 |
6 | & | 按位与 |
5 | ^ | 按位异或 |
4 | | | 按位或 |
3 | && | 逻辑与 |
2 | || | 逻辑或 |
1 | =、+=、-=、*=、/=、%=、&=、^=、|=、<<=、>>= | 赋值、运算且赋值 |
result=$(((1+2)*4/2))
echo $result
# 6
shell 变量
上一篇