【Linux】shell脚本基础-变量

        • 什么是变量?

        • 变量分类:

          • 1. 按照变量的作用分

          • 2. 按照变量的作用域分:

        • 环境变量

        • 用户定义变量

          • 变量的命名与规则:

            • 1) 变量规则测试

            • 2) 关于${} 的使用,拼接测试

            • 3)**能不能不加{}?**

            • 4) 使用反引号或者$()

            • 5) 特殊用法

            • 6) 单引号和双引号的区别

        • 特殊变量

          • 特殊变量实例
        • 变量的案例

        • 总结

什么是变量?

变量是任何一门语言中都不可缺少的组成部分,用于存放各种数据。 脚本语言在使用变量前通常不需要声明类型,只需要直接赋值即可。

环境变量: 有一些特殊的变量会被shell脚本或者操作系统环境用来存储一些特别的值,这类变量被称为环境变量,也有人叫系统变量。

变量分类:
1. 按照变量的作用分
  • 1、用户自定义变量

  • 2、环境变量:这种变量中主要保存的是和系统操作环境相关的数据。

  • 3.位置参数变量:这种变量主要是用来向脚本当中传递参数或数据的,变量名不能自定义,变量作用是固定的。

  • 4、预定义变量:是Bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的。

2. 按照变量的作用域分:
  • 全局变量

    全局变量是环境变量,其值不随shell 脚本的执行结束而消失。

  • 局部变量

    局部变量是shell 程序内部定义的,其使用范围仅限于定义它的程序,对其它程序不可见。包括:用户自定义变量、位置变量和预定义变量。

环境变量

| 系统定义的变量 | 意义 |

| — | — |

| BASH=/bin/bash | Bash Shell 名称 |

| BASH_VERSION=4.1.2(1) | Bash 版本 |

| HOME=/home/linuxtechi | 用户家目录 |

| LOGNAME=LinuxTechi | 当前登录用户的名字 |

| OSTYPE=Linux | 操作系统类型 |

| PATH=/usr/bin:/sbin:/bin:/usr/sbin | 可执行文件搜索路径 |

| PWD=/home/linuxtechi | 当前工作目录 |

| SHELL=/bin/bash | Shell 名称 |

| USERNAME=linuxtechi | 当前登录的用户名 |


[root@ecs-c13b ~]# echo $BASH

/bin/bash

[root@ecs-c13b ~]# echo $OSTYPE

linux-gnu

[root@ecs-c13b ~]# 



我们可以查看与进程相关的环境变量:


[root@ecs-c13b ~]# pgrep sshd

2970

29858

[root@ecs-c13b ~]# cat /proc/2970/environ 

LANG=en_US.UTF-8PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/binNOTIFY_SOCKET=/run/systemd/notifySSH_USE_STRONG_RNG=0[root@ecs-c13b ~]# 



用户定义变量
变量的命名与规则:
  1. 变量由字母或者下划线打头,不允许数字开头,后面由字母,数字或者下划线组成,并且大小写意义不同。

  2. 在使用变量时候,需要在变量名字前面加$

  3. 等号两边不能有空格

  4. 变量值的叠加,使用${}

  5. 命令替换,使用$()或者反引号

1) 变量规则测试

[root@ecs-c13b ~]# 2eee=4      ## 不能以数字开头

-bash: 2eee=4: command not found

[root@ecs-c13b ~]# name=zhangshan   ### 大小写的区别

[root@ecs-c13b ~]# NAME=lisi

[root@ecs-c13b ~]# echo $name

zhangshan

[root@ecs-c13b ~]# echo $NAME

lisi





2) 关于${} 的使用,拼接测试

[root@ecs-c13b ~]# ctest=mysql

[root@ecs-c13b ~]# echo $ctest

mysql

[root@ecs-c13b ~]# echo $ctest-txt

mysql-txt

[root@ecs-c13b ~]# echo $ctest.db.log-txt

mysql.db.log-txt

[root@ecs-c13b ~]# echo {$ctest}db.log

{mysql}db.log

[root@ecs-c13b ~]# echo ${ctest}db.log

mysqldb.log





3)能不能不加{}?

[root@ecs-c13b ~]# echo $ctestdb.log-txt

.log-txt





4) 使用反引号或者$()

[root@ecs-c13b ~]# echo date

date

[root@ecs-c13b ~]# echo $(date)

Wed Aug 5 15:53:03 CST 2020

[root@ecs-c13b ~]# echo date

Wed Aug 5 15:53:15 CST 2020

[root@ecs-c13b ~]#

5) 特殊用法

[root@ecs-c13b ~]# date +"%Y-%m"



**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化的资料的朋友,可以点击这里获取!](https://bbs.csdn.net/topics/618542503)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值