当前位置: 首页 > news >正文

shell编程 变量作用域

  • 变量

    • 变量赋值不用$,访问值时用$,赋值时=两边不留空格,双引号括起来的变量被值替换
    • {}标记变量开始和结束,变量名区分大小写,所有bash变量的值变量不区分类型,统一为字符串
  • 变量类型

    • 环境变量,子进程可以继承父进程环境变量,子进程传递不到父进程
    • 全局变量(变量默认类型),不能在子进程传递
    • 局部变量(用local声明),只在函数范围内
  • 输出变量

    • set所有变量
    • env环境变量
    • export 变量 将一个shell变量提升为环境变量
    • unset删除变量
  • 执行脚本方式

    • ./文件 打开子shell执行文件命令
    • bash [-x] 文件 开子进程
    • source 文件 . 文件 不开子进程
  • 默认变量

    • $0调用文件名
    • $1第一个命令行参数$2$3…
    • $#参数个数(不包括$0)
    • $*全部参数(不包括$0)
    • $$进程PID号
    • $?命令执行后返回状态

main.sh

#! /usr/bin/bashexport env1="kdfsdkf"
g1=443223function a() {local l1=2432klf
}aecho "---main---"
echo env1 $env1
echo g1   $g1
echo l1   $l1./sub1.shecho "---main---"
echo env1 $env1
echo g1   $g1
echo l1   $l1
echo env2 $env2
echo g2   $g2
echo l2   $l2./sub2.sh
echo "---main---"
echo env1 $env1
echo g1   $g1
echo l1   $l1
echo env2 $env2
echo g2   $g2
echo l2   $l2
echo env3 $env3
echo g3   $g3
echo l3   $l3

sub1.sh

#! /usr/bin/bashexport env2=9798fds
g2=dsfaffunction b() {local l2=kjl89
}becho "---sub1---"
echo env1 $env1
echo g1   $g1
echo l1   $l1
echo env2 $env2
echo g2   $g2
echo l2   $l2

sub2.sh

#! /usr/bin/bashexport env3=af9dflkh
g3=bvcbxcxfunction c() {local l3=vcbnpp
}cecho "---sub2---"
echo env1 $env1
echo g1   $g1
echo l1   $l1
echo env2 $env2
echo g2   $g2
echo l2   $l2
echo env3 $env3
echo g3   $g3
echo l3   $l3

输出

---main---
env1 kdfsdkf
g1 443223
l1
---sub1---
env1 kdfsdkf
g1
l1
env2 9798fds
g2 dsfaf
l2
---main---
env1 kdfsdkf
g1 443223
l1
env2
g2
l2
---sub2---
env1 kdfsdkf
g1
l1
env2
g2
l2
env3 af9dflkh
g3 bvcbxcx
l3
---main---
env1 kdfsdkf
g1 443223
l1
env2
g2
l2
env3
g3
l3
http://www.lryc.cn/news/101034.html

相关文章:

  • 华为eNSP:isis的配置
  • FS.05-SAS-UP-Methodology
  • Jmeter并发测试
  • 【JVM】浅看JVM的运行流程和垃圾回收
  • 使用低代码开发,需要注意哪些?
  • 面试总结-Redis篇章(八)——Redis分布式锁
  • 压力测试-商场项目
  • IDEA中文UT方法执行报错问题、wps默认保存格式
  • Vue如何实现编程式导航声明方法,前进和后退导航
  • torch.load 报错 ModuleNotFoundError 或 AttributeError
  • 前端,js , Error in created hook: TypeError ,有bug了
  • 百度文心千帆大模型平台:企业级大模型服务的新航标
  • uniApp低功耗蓝牙一键开门、多对多查找、数组匹配数组、开锁
  • 类和对象|六个默认成员函数|const成员函数|运算符重载
  • 从源码角度去深入分析关于Spring的异常处理ExceptionHandler的实现原理
  • 04mysql查询语句之查询与分页02
  • 原型模式——对象的克隆
  • [SQL挖掘机] - 多表连接
  • Day 14 C++ 对象的初始化和清理
  • Delphi7最佳登录窗体设计
  • 动脑学院Jetpack Compose学习笔记
  • Qt中线程的使用
  • 基于YOLOv8开发构建蝴蝶目标检测识别系统
  • 【已解决】电脑连上网线但无法上网
  • Linux 学习记录57(ARM篇)
  • Doris注意事项,Doris部署在阿里云,写不进去数据
  • 502 Bad GateWay报错的解决方法
  • openpnp - ReferenceStripFeeder 改版零件
  • VoxPoser:使用大语言模型(GPT-4)来对机器人操作的可组合三维值图【论文解读】
  • RISC-V公测平台发布 · 第一个WEB Server “Hello RISC-V world!”