Linux Shell变量与运算解析_Linux脚本中变量使用示例

发布时间 - 2025-12-16 00:00:00    点击率:
Linux Shell变量不声明类型、无需初始化,但赋值时等号两侧不可有空格,引用需加$符号,双引号支持变量展开而单引号不展开;数值运算需用$((...))等显式算术上下文;字符串操作支持长度${#str}、截取${str:0:3};普通变量仅当前进程有效,export后成为子进程可见的环境变量。

Linux Shell 中变量是脚本的基础,它不声明类型、不需初始化,但使用时必须注意赋值语法和引用方式。变量名区分大小写,不能以数字开头,推荐用小写字母加下划线。关键点在于:赋值时等号两侧不能有空格;引用变量必须加 $ 符号;字符串中双引号允许变量展开,单引号则原样输出。

变量定义与引用的常见写法

Shell 变量赋值非常简洁,但空格是大忌:

  • name="Alice" ✅ 正确(等号紧贴)
  • name = "Alice" ❌ 错误(会被解释为执行命令 name
  • echo $nameecho ${name} 都可取值,后者在拼接时更安全,比如 ${name}123 不会误读成变量 name123
  • 未定义变量默认为空,echo $undefined 输出空白,不会报错

数值运算的三种常用方式

Shell 默认把所有变量当字符串处理,做数学计算需显式启用算术上下文:

  • expr $a + $b —— 传统方式,操作符前后必须有空格,且只支持整数
  • $(( a + b )) —— 推荐方式,支持变量直接写、括号嵌套、位运算等,如 $(( 2**3 )) 得 8
  • let "c = a * 2 + 1" —— 类 C 语法,适合多步赋值,但注意引号内空格不影响解析

注意:$(()) 中变量名可省略 $,但外部变量仍需带 $ 引用,例如 a=5; echo $((a+3))

字符串操作与简单判断技巧

变量常用于路径拼接、条件检查或截取子串:

  • 拼接:path="/home"; user="alice"; full="$path/$user"
  • 长度:${#str} 返回字符串字符数,如 str="hello"; echo ${#str} 输出 5
  • 截取:${str:0:3} 表示从第 0 位起取 3 个字符(类似切片)
  • 判断是否为空:[ -z "$var" ] 为空返回真,[ -n "$var" ] 非空返回真,记得加双引号防空格出错

环境变量与局部变量的区别

普通变量只在当前 Shell 进程有效;用 export 声明后才成为环境变量,子进程可见:

  • MY_VAR="test" → 当前脚本可用,bash -c 'echo $MY_VAR' 输出空
  • export MY_VAR="test" → 子 Shell 也能读到
  • unset MY_VAR 可删除变量,包括已 export 的
  • 内置环境变量如 $HOME$PATH 全局可用,修改 PATH 要小心追加:export PATH="$PATH:/my/bin"

基本上就这些。变量看着简单,但空格、引号、$符号、作用域这四点最容易出错。写脚本时多打 echo 调试,比猜快得多。


# linux  # 环境变量  # 区别  # 作用域  # bash  # echo  # 局部变量  # 字符串  # var  # 切片  # undefined  # 为空  # 双引号  # 变量名  # 看着  # 单引号  # 也能  # 下划线  # 误读  # 三种  # 只在 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel怎么生成URL_Laravel路由命名与URL生成函数详解  如何彻底删除建站之星生成的Banner?  Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?  南京网站制作费用,南京远驱官方网站?  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?  Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】  WEB开发之注册页面验证码倒计时代码的实现  ChatGPT怎么生成Excel公式_ChatGPT公式生成方法【指南】  jQuery validate插件功能与用法详解  Laravel定时任务怎么设置_Laravel Crontab调度器配置  如何构建满足综合性能需求的优质建站方案?  Laravel如何实现数据导出到CSV文件_Laravel原生流式输出大数据量CSV【方案】  Laravel如何使用Scope本地作用域_Laravel模型常用查询逻辑封装技巧【手册】  Laravel如何生成API文档?(Swagger/OpenAPI教程)  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  如何快速启动建站代理加盟业务?  如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧  laravel怎么配置Redis作为缓存驱动_laravel Redis缓存配置教程  Claude怎样写结构化提示词_Claude结构化提示词写法【教程】  重庆市网站制作公司,重庆招聘网站哪个好?  网站制作价目表怎么做,珍爱网婚介费用多少?  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  Linux安全能力提升路径_长期防护思维说明【指导】  深圳网站制作的公司有哪些,dido官方网站?  潮流网站制作头像软件下载,适合母子的网名有哪些?  php在windows下怎么调试_phpwindows环境调试操作说明【操作】  网站优化排名时,需要考虑哪些问题呢?  谷歌Google入口永久地址_Google搜索引擎官网首页永久入口  Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】  北京企业网站设计制作公司,北京铁路集团官方网站?  html5如何实现懒加载图片_ intersectionobserver api用法【教程】  微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】  今日头条AI怎样推荐抢票工具_今日头条AI抢票工具推荐算法与筛选【技巧】  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  Android仿QQ列表左滑删除操作  宙斯浏览器视频悬浮窗怎么开启 边看视频边操作其他应用教程  Laravel如何使用Passport实现OAuth2?(完整配置步骤)  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?  网站制作软件有哪些,制图软件有哪些?  如何在阿里云购买域名并搭建网站?  音乐网站服务器如何优化API响应速度?  如何快速搭建高效WAP手机网站吸引移动用户?  瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口  php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】  laravel怎么使用数据库工厂(Factory)生成带有关联模型的数据_laravel Factory生成关联数据方法  悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  如何在Ubuntu系统下快速搭建WordPress个人网站?