目录:

  • 定义变量
  • 使用变量
  • 只读变量
  • 删除变量
  • 变量作用域(全局变量,局部变量,环境变量)

一、定义变量

 简介: shell中定义变量与python语言类似语法: name=[value]注意事项:1.value没有给出,变量将被赋值为空字符串2.赋值等号两边不能有空格,这几乎和所有的编程语言都不一样变量名的命名规则同python:1.英文字母,数字和下划线_2.首字符不能是数字3.不能使用bash中的关键字(help命令查看保留关键字)4.定义变量有多种形式例如:1.当值中不包含空格时,可以不需要引号name=henry2.当值中包含空格时,需要引号name='henry fh'

二、使用变量

1.使用一个定义过的变量,只要在变量名前面加美元符号即可,如:

         name="henry"echo $nameecho ${name}

2.变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界
例如:

         echo "${name}是是是!"

三、只读变量

定义:使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变
例如:

nameurl="baidududu.com"   #  <======= 定义变量
readonly nameurl        # <======= 设置变量为:只读变量nameurl="baidududvvvu.com"    # <======= 尝试更改只读变量
-bash: nameurl: readonly variable    # <======= 报错提示只读变量不能被更改

四、删除变量

1.定义:使用 unset 命令可以删除变量

2.语法:unset variable_name

3.变量被删除后不能再次使用。unset 命令不能删除只读变量。

unset name   <======= 删除变量
echo $name   <======= 再次输出变量,没有东西输出

五、变量作用域(全局变量,局部变量,环境变量)

定义:运行shell时,会同时存在三种变量:局部变量,全局变量,环境变量

1.局部变量:局部变量在脚本或命令中定义,仅在当前shell进程中有效

例如:

主shell进程:name=henry   <======= 在命令行中定义变量nameecho $name   <======= 在当前命令行中定义变量name,可以输出当前变量子shell进程:test.sh       <=======  创建脚本test.sh并输入命令echo $name ,获取主进程中的变量bash test.sh   <======= 执行test.sh 发现脚本里访问不到变量name,应为定义的name是局部变量只在当前终端进程中有效

2.全局变量:在当前shell中任何地方可以使用的变量,且在子shell中也有效

  1. 查看所有全局变量:env 命令
  2. 如何定义全局变量:export 变量名=变量值

例如:

主shell进程:export info=mk       <=======    在命令行中定义变量info为全局变量echo $info       <=======    在当前命令行中定义变量info,可以输出当前变量子shell进程:test.txt          <=======    创建脚本test.txt 并输入命令 echo $info,获取主进程中的变量bash test.txt     <=======    执行test.txt 获取到全局变量info

  1. 注意事项:
    1.export定义的全局变量是临时的,只对当前进行shell进程有效
    2.当关闭执行定义的shell进程后,定义的变量就会被销毁
    3.所以通过export定义的全局变量只能向下传递,也即是只能是父shell传递给子shell

新开一个shell进程,去查看变量,是没有的

3.环境变量:定义环境变量在当前shell和其他shell进程中都可以使用

  1. 定义:
    1.所有的程序,包括shell启动的程序,都能访问环境变量
    2.有些程序需要环境变量来保证其正常运行,必要的时候shell脚本也可以定义环境变量
    3.环境变量本质上就是全局变量,只不过它是在启动终端(shell主进程)时通过执行初始化脚本预定义的。
  1. 如何定义环境变量:
    1.启动终端后直接输入:env命令 显示得所有变量都是环境变量
    2.要定义环境变量可以在以下文件中通过export定义:
1.~/.bashrc    <======= 只对当前用户的终端有效例如:进入家目录,输入ls -a   <=======  查看所有的文件vim .bashrc    <======= 定义环境变量,当前用户下的终端有效
2.~/.profile    <======= 只对当前用户的终端有效
3./etc/bash.bashrc    <======= 对所有用户的终端有效

Shell编程之第二讲——shell 的变量相关推荐

  1. 自学shell编程——第1讲(基础概念、变量、符号、字符串处理)

    shell编程 1. 常见shell命令 ls cd more less pwd mkdir clear touch vim chmod grep cp ln mv man ps -ef 查看这些命令 ...

  2. shell编程(三) : [Linux基础] Linux 环境变量

    接上一篇文章Linux shell编程(二): Linux shell基础 2.3 Linux环境变量 bash shell用一个叫作环境变量(environment variable)的特性来存储有 ...

  3. Linux Shell编程及自动化运维实现 变量

    SHELL 前言 什么是shell shell壳命令解释器,一种应用程序. shell语言的特点SHELL语言是指UNIX操作系统的命令语言,同时又是该命令语言的解释程序的简称.Shell本身是一个用 ...

  4. Shell编程中的“局部变量”和“导出变量” (export 用法)

    本原创文章属于<Linux大棚>博客,博客地址为http://roclinux.cn.文章作者为rocrocket. 如果你对子Shell的概念不甚了解,如果你对export的用法还没吃透 ...

  5. 【shell编程】1、shell编程简介

    Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成的.Shell既是一种命令语言,又是一种程序设计语言.作为命令语言,它交互式地解释 ...

  6. 小苏的Shell编程笔记之二--Shell变量及其相关操作

    1.  Shell中的变量类型 Shell中的变量可以分为环境变量.位置变量.预定义的特殊变量以及用户自定义变量. 2.  环境变量 Shell中的环境变量是一类Shell预定义变量,是用于设置系统运 ...

  7. Linux shell编程学习笔记-----第六章变量和引用

    6.1变量 变量可分为本地变量(随着shell进程的消亡而消亡,类似于java C++ 中的局部变量),环境变量(适用于所有由登录进程产生的子进程),位置参数(用于向shell脚本传递参数,是只读的) ...

  8. Shell编程入门(第二版)(中)

    变量测试语句-test 作用:用来测试变量是否相等,是否为空,文件类型等. 格式: test 测试条件 或 [] #范围:整数,字符串,文件 1)整数测试: test int1 -eq int2  测 ...

  9. Shell编程入门(第二版)(下)

    流程控制语句 三.select/in[较少用] 格式: [python] view plaincopy select [变量] in [关键字] do command 1 ... ... comman ...

最新文章

  1. 美国重夺超算“头把交椅”,专家建议中国加快E级超算研制
  2. 网页实时聊天之PHP如何实现websocket
  3. 在django restful framework中设置django model的property
  4. php 腾讯企业邮箱接口,帮助中心 腾讯企业邮箱OpenApi协议
  5. MAC chrome浏览器 adobe flash player不是最新版本提示 的解决方案
  6. Internet Explorer7.0订阅“源”
  7. linux中的集线器、交换机、路由器及组网
  8. 威纶触摸屏使用说明书_PLC变频器触摸屏综合实训
  9. 软件测试项目复盘,如何开始复盘测试_测试_复盘大师官网
  10. 计算机excel界面,理解Excel工作界面
  11. 离开马云后,20位阿里人的区块链创业路
  12. Pokeman.csv 处理(Python)
  13. 2022年 CSP-J1 CSP-S1 初赛 如何进行复习 如何做题
  14. 【MySQL数据库开发之一】Mac下配置安装数据库-MySQL
  15. 树莓、香蕉、香橙各款配置对比以及自己的一些想法
  16. IE浏览器请求json数据弹出下载框问题
  17. 目标检测中NMS和mAP指标中的的IoU阈值和置信度阈值
  18. 矿机主板EBAZ4025当作开发板
  19. 高效阅读英语信息的方法
  20. 【Python】实时采集疫情数据,打造可视化地图,防疫从你我做起

热门文章

  1. CookieSession
  2. 楼道灯人体红外感应电路(全波式)
  3. C语言 自定义类型 之 【枚举】
  4. C语言 IO多路复用——poll函数
  5. SSD1306显示屏--躲避类游戏
  6. 前列腺增生症的治疗行业调研报告 - 市场现状分析与发展前景预测
  7. 内网DNS报错:** server can‘t find ns1.aaa.com: SERVFAIL
  8. 线代【二次型】--猴博士爱讲课
  9. 需求预测模型分类与选择
  10. 大爱 unity 数字孪生 老卵了 Unity 数字孪生笔记1 工具介绍