【Linux】【Shell】Shell 运算符

研究学习 Linux Shell 的系列文章.

这篇文章主要讲 Shell 运算符.

1. declare 命令

Shell 变量

  • 弱类型
  • 默认字符串类型

declare 命令声明变量类型

declare [+/-] [选项] 变量名
  • - :给变量设定类型属性
  • + :取消变量的类型属性
  • -a :将变量声明为数组型
  • -i :将变量声明为整数型(integer)
  • -x:将变量声明为环境变量
  • -r:将变量声明为只读变量
  • -p:显示指定变量的被声明的类型

declare -i 声明整型变量

[root@cloudvm ~]# aa=11
[root@cloudvm ~]# bb=22
[root@cloudvm ~]# cc=$aa+$bb
[root@cloudvm ~]# echo $cc
11+22
[root@cloudvm ~]# declare -i cc=$aa+$bb
[root@cloudvm ~]# echo $cc
33

declare -a 声明数组变量

[root@cloudvm ~]# movie[0]=zp
[root@cloudvm ~]# movie[1]=tp
[root@cloudvm ~]# declare -a movie[2]=live
[root@cloudvm ~]# echo ${movie}    # 调用下标首位的变量
zp
[root@cloudvm ~]# echo ${movie[2]}
live
[root@cloudvm ~]# echo ${movie[*]}
zp tp live

declare -x 声明环境变量,与 export 作用相似,但其实是 declare 命令的作用

[root@cloudvm ~]# declare -x test=123

declare -r 声明变量只读属性. 请注意只读属性会让变量不能修改不能删除,甚至不能取消只读属性.

[root@cloudvm ~]# declare -r test
[root@cloudvm ~]# declare -p test
declare -rx test="123"
[root@cloudvm ~]# test=456
-bash: test: readonly variable
[root@cloudvm ~]# unset test
-bash: unset: test: cannot unset: readonly variable
[root@cloudvm ~]# declare +r test
-bash: declare: test: readonly variable

declare -p 查看变量属性和类型
查看单个变量

[root@cloudvm ~]# declare -p test
declare -x test="123"

查看全部变量

[root@cloudvm ~]# declare -p
declare -- ABRT_DEBUG_LOG="/dev/null"
declare -- BASH="/bin/bash"
declare -r BASHOPTS="checkwinsize:cmdhist:expand_aliases:extglob:extquote:force_fignore:histappend:interactive_comments:login_shell:progcomp:promptvars:sourcepath"
declare -ir BASHPID
declare -A BASH_ALIASES='()'
declare -a BASH_ARGC='()'
  ...
  ...
declare -- colors="/root/.dircolors"
declare -x test="123"

2. 数值运算方法

方法 1. declare -i

[root@cloudvm ~]# aa=11
[root@cloudvm ~]# bb=22
[root@cloudvm ~]# declare -i cc=$aa+$bb
[root@cloudvm ~]# echo $cc
33

方法 2. exprlet 数值运算工具

[root@cloudvm ~]# aa=11
[root@cloudvm ~]# bb=22   
[root@cloudvm ~]# dd=$(expr $aa + $bb)    # 注意 “+” 号左右两侧必须有空格
[root@cloudvm ~]# echo $dd
33
[root@cloudvm ~]# dd=$(expr $aa+$bb)
[root@cloudvm ~]# echo $dd
11+22

方法 3. $((运算式))$[运算式]

[root@cloudvm ~]# aa=11
[root@cloudvm ~]# bb=22
[root@cloudvm ~]# ee=$(($aa+$bb))
[root@cloudvm ~]# echo $ee
33

$(命令)表示将命令输出作为变量值

[root@cloudvm ~]# ff=$(ls)
[root@cloudvm ~]# echo $ff
anaconda-ks.cfg

运算符

优先级运算符说明
13-,+单目负、单目正
12!,~逻辑非、按位取反或补码
11*,/,%乘、除、取模
10+,-加、减
9<<,>>按位左移、按位右移
8<=,>=,<,>小于或等于、大于或等于,小于、大于
7==,!=等于、不等于
6&按位与
5^按位异或
4|按位或
3&&逻辑与
2||逻辑或
1=,+=,-=,*=,/=,%=,&=,^=,|=,<<=,>>=赋值、运算且复制

3. 变量测试

格式复杂多样,语法简单

变量置换方式变量y没有设置变量y为空值变量y设置值
x=${y-新值}x=新值x为空x=$y
x=${y:-新值}x=新值x=新值x=$y
x=${y+新值}x为空x=新值x=新值
x=${y=新值}x=新值,y=新值x为空,y值不变x=$y,y值不变
x=${y:=新值}x=新值,y=新值x=新值,y=新值x=$y,y值不变
x=${y?新值}新值输出到标准错误输出(就是屏幕)x为空x=$y
x=${y:?新值}新值输出到标准错误输出新值输出到标准错误输出x=$y

变量测试在脚本优化时使用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值