您现在的位置是:首页 > Javascript
当前栏目
前端运维之Shell运算符
2023-03-14 22:33:42 时间
Shell运算符
shell
中的变量默认是字符串类型的,且是弱类型的。
declare
declare
命令
-
declare
用来声明变量类型。 -
declare [+/-] [选项] 变量名
选项 | 含义 |
---|---|
- | 给变量设定类型属性 |
+ | 取消变量的类型声明 |
-a | 表示将变量声明为数组类型 |
-l | 表示将变量声明为整数类型 |
-i | 表示将变量声明为整数类型 |
-x | 表示将变量声明为环境变量(相当于export [变量名]=[变量值]) |
-r | 表示将变量声明为只读类型 |
-p | 显示变量的类型标示 |
Demo
a=1
b=2
c=$a+$b
echo $c # 1+2
declare -i c=$a+$b # 表示声明整形变量
echo $c # 3
declare +i c # 取消c变量的类型声明
c=$a+$b
echo $c # 1+2
declare -i $d=1
declare -p $c # declare -i $c="3"
# 声明环境变量
declare -x $e=6
set | grep e=10 # e=10
env | grep e=10 # e=10
declare -r x=10
x=11 # bash:x is readonly
复制代码
数组
- 通过
declare -a [变量名]
可以声明一个数组类型的变量。
delcare -a names # 声明一个数组变量names
names[0]=wang
names[1]=haoyu
复制代码
当调用echo [数组类型]
的时候默认只打印数组中的第一个:
需要额外注意的时候,调用数组类型的时候需要使用
${数组}
进行访问。因为数组类型表示是一个可计算的整体。
echo ${names} # wang
echo ${names[1]} # haoyu
复制代码
如果使用echo names[1]代表的意思就不同了,就是打印names这个变量然后再拼接上[1]字符串,就是haoyu[1]。需要使用
- 通过
*
通配符打印数组中所有的内容。
echo ${names[*]} # wang haoyu
环境变量
通过declare -x xx=6
可以声明一个环境变量xx
的值为6
。
它与export xx=6
是相同的效果都是声明环境变量语句,export
内部实际调用的就是declare -x
语句,语法糖而已。
只读属性
通过declare -r [变量]
可以声明一个只读的变量。
查询变量属性
通过declare -p [变量]
可以查看变量的类型属性。
变量数值运算的方法
- 只要通过
declare
声明的变量指定类型,就可以进行数值的运算了。
expr
以及let
通过expr
和let
关键字可以进行变量类型的计算。
num1=1
num2=2
sum=$(expr $num1 + $num2) # 注意+运算符左右两边必须有空格
echo $sum # 3
复制代码
sum2=$(($num1 + $num2))
echo sum2 # 3 和上边是等价的
复制代码
sum3=$[$num1 + $num2]
echo sum3 # 3 和上边也是等价的
复制代码
相关文章
- 鲜为人知但很有用的 HTML 属性
- 翻转再翻转!有意思的水平横向溢出滚动
- 自定义计数器小技巧!CSS 实现长按点赞累加动画
- 过五关!React高频面试题指南
- 软件开发中的十个认知偏差
- 不需要 JS!仅用 CSS 也能达到监听页面滚动的效果!
- 一文读懂TypeScript类型兼容性
- Vue 的响应式原则与双向数据绑定
- 快速掌握 TypeScript 新语法:Infer Extends
- JWT教你如何证明你是我的人!
- 一篇带给你 V8 GC 的实现
- 面试官:请使用JS完成一个LRU缓存?
- 通过可视化来学习JavaScript事件循环
- 新的跨域策略:使用 COOP、COEP 为浏览器创建更安全的环境
- 为什么有人说 vite 快,有人却说 vite 慢?
- 种草 Vue3 中几个好玩的插件和配置
- 超全面的前端工程化配置指南
- Vue 状态管理未来样子
- Volatile关键字能保证原子性么?
- 面试突击:SpringBoot 有几种读取配置文件的方法?