码迷,mamicode.com
首页 > 系统相关 > 详细

shell(一) shell变量

时间:2019-11-21 19:57:43      阅读:77      评论:0      收藏:0      [点我收藏+]

标签:定义   命令   双引号   参数   tab   划线   code   执行   $?   

基本介绍

变量命名规范

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

自定义变量

  • 当前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变量

标签:定义   命令   双引号   参数   tab   划线   code   执行   $?   

原文地址:https://www.cnblogs.com/codeBang/p/11906462.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!