基本介绍

变量命名规范

  • 变量名要求由字母、数字、下划线组成,尽量字母开头,有明确含义
  • 注意:变量赋值时,等号前后不能有空格,变量名称不能和字体变量冲突

自定义变量

  • 当前shell有效
1.定义变量
var="hello shell"
2.使用变量, $变量名或者${变量名}
echo $var 或者echo ${var}
echo ${var}_log
#3. 查看变量,set显示所有变量,包括自定义变量和环境变量
  • 注意事项,单引号和双引号的问题,单引号里面,输入什么就是什么

    1.在定义变量时,用双引号

    2.在引用变量时,用双引号

    3.在需要输出特殊符号时,用单引号

单引号和双引号使用示例

⚡ root@i  /opt/shellTest  var="hello shell"

双引号
⚡ root@i  /opt/shellTest  echo "$var"
------- hello shell 单引号
⚡ root@i  /opt/shellTest  echo '$var'
------- $var 特殊符号
⚡ root@xigua  ~  var="hello"
⚡ root@xigua  ~  echo "$var is \$500"
hello is $500

系统环境变量

相当于全局变量,当前shell和子shell都有效

查看所有的系统环境变量
⚡ root@xigua  ~  export

export 可以将自定义变量,改为系统环境变量

## 预定义变量 位置参数

  1. $0 文件名字
  2. $n 第n个参数 n>0
  3. $* 所有参数
  4. $@ 所有参数
  5. $$ 返回PID
  6. $? 上一条语句的执行结果 =0 表示成功,不等于0失败
  • $@和$*的区别

命令替换


# 根据系统时间打印 今年时间和明年时间
(注意有多少个括号)
⚡ root@xigua  ~  echo "$(date +%Y)"
2019 ⚡ root@xigua  ~  echo "($(date +%Y)+1)"
(2019+1)
⚡ root@xigua  ~  echo "$(($(date +%Y)+1))"
2020

变量替换

变量 说明
${变量#匹配规则} 从前开始匹配,最短删除, 删除符合匹配规则的部分
${变量##【匹配规则} 从前开始匹配,最长删除,删除符合匹配规则的部分
${变量%匹配规则} 从后开始匹配,最短删除,删除符合匹配规则的部分
${变量%%匹配规则} 从前开始匹配,最长删除,删除符合匹配规则的部分
${变量/旧字符串/新字符串} 替换变量中的旧字符串为新的字符串,只替换一个
${变量//旧字符串/新字符串} 替换变量中的旧字符串为新的字符串,替换所有符合条件的

使用案例

  • 根据匹配规则删除字符
-- url=www.sina.com.cn
www.sina.com.cn -- echo ${url}
www.sina.com.cn ------------------------------------------------------------
~/Documents/mine/study_note » echo ${url##.*}
www.sina.com.cn
------------------------------------------------------------
~/Documents/mine/study_note » echo ${url%.*}
www.sina.com
------------------------------------------------------------
~/Documents/mine/study_note » echo ${url#*.}
sina.com.cn ------------------------------------------------------------
~/Documents/mine/study_note » echo ${url##*.}
cn ~/Documents/mine/study_note » echo ${url%*.}
www.sina.com.cn
------------------------------------------------------------
~/Documents/mine/study_note » echo ${url%.*}
www.sina.com
------------------------------------------------------------
~/Documents/mine/study_note » echo ${url%%.*}
www
  • 替换字符串

练习题

  • 查看内存,当使用超过80%时,发邮件报警

shell(一) shell变量的更多相关文章

  1. shell编程之变量

    变量: 变量由字母.数字._ 组成,不能以数字开头 长度不能超过255个字符 在bash中,变量的默认类型是字符串类型 变量分类: 1.用户自定义变量:只在当前shell生效,是局部变量 定义方法: ...

  2. Shell基础-环境变量配置文件

    Shell基础-环境变量配置文件 source 配置文件 或者 . 配置文件: 把环境变量写入配置文件后,需要用户重新登陆才能生效,而是用source命令,则能直接生效 主要的配置文件: /etc/p ...

  3. Linux —— Shell编程之变量赋值和引用

    Linux的shell编程是一种非常成熟的编程语言,它支持各种类型的变量.有三种主要的变量类型:环境变量.内部变量和用户变量. 环境变量(environment variable)是系统环境的一部分, ...

  4. Linux学习——shell编程之变量

    shell编程之变量:Linux shell编程基础中的变量. 包括Bash变量的分类和各变量的详细使用,如:用户自定义变量.环境变量.语系变量.位置参数变量和预定义变量. 1:什么是Bash变量? ...

  5. shell基础及变量

    一 Shell概述 1.Shell的作用——命令解释器,“翻译官” shell作为一个人机接口,用于解释用户输入的命令,将命令解释为Linux内核可以执行的2进制代码,并将执行的结果返回在标准终端上. ...

  6. Shell的特殊变量

    在Shell里存在的一些特殊变量:$!.$@.$#.$$.$*.$0.$n.$_.$? [root@shell ~]# sh shell.sh aaa bbb ccc$0 获取当前执行的shell脚本 ...

  7. Linux编程 11(shell全局环境变量与局变环境变量)

    一.概述 在linux中,很多程序和脚本都通过环境变量来获取系统信息,存储临时数据,配置信息.环境变量是指用来存储有关shell会话和工作环境信息,允许你在内存中存储数据,以便程序或shell中运行的 ...

  8. linux shell脚本之-变量极速入门与进阶(1)

    1,如果创建shell脚本? 使用任意文本编辑软件,一般为vim,创建.sh结尾的文件,在文件的最开头用 #!/bin/bash 注明shell的类型 如: ghostwu@dev:~/linux/s ...

  9. shell中的变量a=100, 什么时候作整数使用, 什么时候作字符串使用呢?

    shell中的变量a=100, 什么时候作整数使用, 什么时候作字符串使用呢? 这确实是一个困扰很久的一个问题? how it can be an issue? 事实上, 在shell中, 你可以认为 ...

  10. awk中使用shell的环境变量

    awk中使用shell的环境变量一:"'$var'"这种写法大家无需改变用'括起awk程序的习惯,是老外常用的写法.如:var="test"awk 'BEGIN ...

随机推荐

  1. Java中如何获取一个类中泛型的实际类型

    本文链接:https://blog.csdn.net/kuuumo/article/details/83021158   _______________________________________ ...

  2. HTML+CSS学习笔记整理二

    盒子模型CSS(重点) 边框border     边框通常使用连写border:1px(边框大小) solid(实线或其他)  red(颜色) border-collapse:collapse (合并 ...

  3. C#利用newtonsoft.json读取.so配置文件内容

    今天花 了点时间来使用 C#读取json文件 ,文件后缀为 .so文件 ,也是基于文件流的形式 获取 对象 ,然后解析; 之所以尝试 使用 json读取 ,是因为其配置文件的格式 更为友好 和方便,直 ...

  4. 图层树右键菜单结合Command操作过程

         图层树右键菜单结合Command操作过程 根据老师线上培训图层树右键菜单的生成,添加contextMenuStrip后再依次添加.命名ToolStripMenuItem,若将全部‘项’添加C ...

  5. PIE SDK直方图统计法

    1.算法功能简介 图像直方图描述了图像中每个亮度值DN的像元数量的统计分布.它通过每个亮度值的像元数除以图像中总得像元数,即频率直方图.在很多遥感应用中,直方图是遥感图像中所包含的信息的一种有用的图示 ...

  6. mysql锁机制总结,以及优化建议

    一.锁概述和分类 二.表锁 偏向MyISAM存储引擎,开销小,加锁快:无死锁:锁定粒度大,发生锁冲突的概率最高,并发度最低. [手动增加表锁] lock table 表名字1 read(write), ...

  7. Vue详细介绍模板语法和过滤器的使用!

    表达式 {{ XXX }}使用过滤器 {{ XXX | yyy}}使用多个过滤器 {{ XXX | yyy | yyy1}}过滤器带参数 {{ XXX | yyy(123,"zhuiszhu ...

  8. ASP.NET Core IIS发布

    ASP.NET Core应用发布到IIS 官网教程地址:https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/publish-to-iis?vi ...

  9. 如何开发出成功的iOS应用(流程图)

    转自:http://mobile.51cto.com/hot-307342.htm 近来,肥沃的应用开发土壤不断孕育出一个个振奋人心的故事,成千上万的人都觊觎从这个机遇无限的领域中分一杯羹.虽然现在的 ...

  10. i春秋——“百度杯”CTF比赛 十月场——Login

    根据页面源码提示的 test1 test1 登录 刷新此页面并抓包,有个show=0值得关注 在发送的包的header中加一句show:1,即可得到member.php的源码 <?php inc ...