Shell编程基础(二)变量 & 整数运算 & 浮点运算

变量 &

变量

概念

简单来讲,就是用于保存数据的一个盒子,数据本质上是存储在内存种的,变量存储了这个内存地址,从而可以获取数据。

变量又分为 系统变量 ,自定义变量

命名规范:由字母,数字,下划线构成,数字不能开头

使用

  • 定义变量 age=10,重复定义会覆盖之前的值
  • 获取变量 $age
  • 设为只读变量 readonly age,设为只读后,不能再次赋值
  • 移除变量 unset age
  • 查看所有变量 set

整数运算

expr

运算符和数字之间要留有空格

  • expr 1 + 2
  • expr 1 - 2
  • expr 1 * 2
  • expr 1 / 2
  • expr 1 % 2
    expr 结果赋值给变量
bash 复制代码
a=`expr 1 + 1`;
echo ${a}

$(())

运算符和数字无需空格

bash 复制代码
[root@origin sh]# echo $((1+1))
2
[root@origin sh]# echo $((1*1))
1
[root@origin sh]# echo $((1/2))
0
[root@origin sh]# echo $((1-2))
-1
[root@origin sh]# echo $((1%2))
1
# 次方
[root@origin sh]# echo $((2**2))
4

赋值给变量

bash 复制代码
a=$((1+3))
echo ${a}

$[]

运算符和数字无需空格

bash 复制代码
[root@origin sh]# echo $[1+1]
2
[root@origin sh]# echo $[1-2]
-1
[root@origin sh]# echo $[1*2]
2
[root@origin sh]# echo $[1/2]
0
[root@origin sh]# echo $[1%2]
1
[root@origin sh]# echo $[2**2]
4

赋值给变量

bash 复制代码
a=$[1+3]
echo ${a}

let

" + - * / % ** "

常用于定义一个变量接收计算结果

bash 复制代码
[root@origin sh]# let a=1+1;echo ${a}
2

bc (功能更强大)

需bc库支持

" + - * / % ^ sqrt(num) "

语法:表达式 | bc

  • 基本使用
bash 复制代码
[root@origin sh]# echo 1+1|bc
2
  • 指定小数保留位数 scale=2;计算表达式|bc。默认整数为0时,不显示
bash 复制代码
[root@origin sh]# echo "scale=2;2/3"|bc
.66
  • 格式化显示结果(显示整数位 的0)
bash 复制代码
[root@origin sh]# printf "%.2f\n" `echo "scale=2;2/3"|bc`
0.66
  • 设置 入参和结果的进制 ibase=2;obase=2
    入参 以二进制解析,如果参数超过1,统统按1算
    结果以二进制显示
    例子
bash 复制代码
[root@origin sh]# echo "ibase=2;10+10"|bc
4
[root@origin sh]# echo "ibase=2;10+12"|bc
5
[root@origin sh]# echo "ibase=2;10+13"|bc
5
[root@origin sh]# echo "ibase=2;10+14"|bc
5
[root@origin sh]# echo "ibase=2;10+94"|bc
5

计算结果赋值给变量

bah 复制代码
[root@origin sh]# b=`echo 1+3|bc`;echo ${b}
4
相关推荐
风虎云龙科研服务器36 分钟前
DeepSeek服务器繁忙之谜:原因与解决方案
运维·服务器·人工智能·科技·深度学习
计算机毕设定制辅导-无忧学长38 分钟前
Git 钩子的应用与自动化流程
运维·git·自动化
亦世凡华、2 小时前
从零开始:使用Jenkins实现高效自动化部署
运维·自动化·jenkins·安装教程·基本使用
forestqq2 小时前
openEuler22.03LTS系统升级docker至26.1.4以支持启用ip6tables功能
linux·运维·docker
xing.yu.CTF3 小时前
2022年中职网络建设与运维赛题-windows服务器解析
运维·服务器·网络·windows·网络建设与运维
x66ccff4 小时前
【GIS】本地部署nominatim地理编码服务
运维
蓝创精英团队5 小时前
基于Ubuntu Ollama 部署 DeepSeek-R132B 聊天大模型(附带流式接口调用示例)
linux·运维·ubuntu·deepseek
下雨天u5 小时前
jenkins手动安装插件
运维·jenkins
渲染101专业云渲染6 小时前
川翔云电脑是什么?租电脑?
运维·服务器·电脑
007php0076 小时前
Docker、Ollama、Dify 及 DeepSeek 安装配置与搭建企业级本地私有化知识库实践
运维·服务器·开发语言·后端·docker·容器·云计算