首页
学习
活动
专区
圈层
工具
发布
24 篇文章
1
Linux系列教程(一)——Linux系统简介
2
Linux系列教程(四)——Linux常用命令之文件和目录处理命令
3
Linux系列教程(五)——Linux常用命令之链接命令和权限管理命令
4
Linux系列教程(六)——Linux常用命令之文件搜索命令
5
Linux系列教程(二)——Linux系统安装(手把手学安装centos6.8)
6
Linux系列教程(三)——Linux学习技巧
7
Linux系列教程(七)——Linux常用命令之帮助和用户管理命令
8
Linux系列教程(十一)——Linux软件包管理之RPM命令
9
Linux系列教程(十三)——Linux软件包管理之源码包、脚本安装包
10
Linux系列教程(八)——Linux常用命令之压缩和解压缩命令
11
Linux系列教程(十二)——Linux软件包管理之yum在线管理
12
Linux系列教程(九)——Linux常用命令之网络和关机重启命令
13
Linux系列教程(十四)——Linux用户和用户组管理之相关配置文件
14
Linux系列教程(十)——Linux文本编辑器vim
15
Linux系列教程(十五)——Linux用户和用户组管理之用户管理命令
16
Linux系列教程(十六)——Linux权限管理之ACL权限
17
Linux系列教程(十七)——Linux权限管理之文件系统系统属性chattr权限和sudo命令
18
Linux系列教程(十八)——Linux文件系统管理之文件系统常用命令
19
Linux系列教程(二十一)——Linux的bash基本功能
20
Linux系列教程(二十)——Linux的shell概述以及如何执行脚本
21
Linux系列教程(二十四)——Linux的系统管理
22
Linux系列教程(二十三)——Linux的服务管理
23
Linux系列教程(十九)——Linux文件系统管理之手工分区
24
Linux系列教程(二十二)——Linux的bash变量

Linux系列教程(二十二)——Linux的bash变量

  上篇博客我们介绍了bash的一些基本功能,这是我们平时操作最频繁的。本篇博客我们介绍bash的变量,为后面编写shell脚本做铺垫。

1、什么是变量

  变量是计算机内存的单元,其中存放的值可以改变。

  当 shell 脚本需要保存一些信息时,如一个文件名或者一个数字,就把它放在一个变量里。每个变量都有一个名字,可以根据名字来引用变量。

  使用变量可以保存有用信息,使系统获知用户的相关设置,变量也可以保存暂时信息。

2、变量的声明规则

3、变量的分类

4、用户自定义变量的用法

  用户自定义变量也就是本地变量。只在当前 shell 中生效。

  ①、变量定义

代码语言:javascript
复制
变量名=变量值

  ②、变量调用

代码语言:javascript
复制
$变量名

  ③、变量查看

代码语言:javascript
复制
set

  set 是查看当前系统中定义的所有变量。

  ④、变量删除

代码语言:javascript
复制
unset 变量名

5、环境变量的用法

  环境变量主要保存的是和系统操作环境相关的变量。

  前面讲的用户自定义变量(本地变量)只在当前shell 中生效,而环境变量会在当前shell和这个shell的所有子shell当中生效,如果把环境变量写入相应的配置文件中,那么这个环境变量就会在所有的shell中生效。

  ①、通过 pstree 命令区分当前shell 的级别是父还是子

  ②、声明环境变量

代码语言:javascript
复制
export 变量名=变量值

  ③、查询所有环境变量

代码语言:javascript
复制
env

  前面讲的 set 命令是查看所有变量,而 env 是查看环境变量。

  ④、查看、删除指定环境变量

代码语言:javascript
复制
$变量名          #查看环境变量
unset 变量名   #删除环境变量

  这两个和本地变量一样。

  ⑤、系统查找命令的路径环境变量 $PATH

我们知道调用命令必须要是在当前目录,或者是用绝对路径进行。但是实际上我们调用某个命令直接使用命令名就可以了,比如cd,ls等等这些常用的,这是为什么呢?

  原因就是在 $PATH 里面我们已经定义好了,我们执行某个名称的命令,系统会首先去$PATH里面查找,如果找不到才会报找不到命令错误。

首先看一下$PATH:

  可以看到,$PATH 里面都是保存的一些路径,然后通过:分隔。

  前面我们写过一个 hello.sh 的脚本,我们知道要想执行它,必须首先赋予可执行权限,然后要么在当前目录通过./hello.sh来执行,要么通过绝对路径/tmp/hello.sh来执行。如果我们想直接通过 hello.sh 来执行呢?

  解决办法就将hello.sh的所在路径添加到 $PATH 变量中,如下:

  ⑥、定义系统提示符的变量 $PS1

6、位置参数变量的用法

7、预定义变量的用法

  其实预定义变量也是位置参数变量的一种,有如下几种用法:

 8、声明变量类型 declare

9、数值运算的三种方法

  ①、declare -i 

  ②、expr 或 let 数值运算工具

  ③、$((运算式)) 或 $[运算式]

10、运算符及其优先级顺序

11、变量测试与替换

12、环境变量配置文件

  前面我们在将环境变量的时候,我们将脚本的路径加入到 $PATH 路径中,然后就可以直接通过脚本的名称来执行脚本。但是如果系统重启之后,发现又必须要重新加入到 $PATH 变量中才可以。那么有没有让它一直生效的方法呢?

  解决办法就是在环境变量配置文件中加入脚本的路径。

  环境变量配置文件中主要定义对系统的操作环境生效的系统默认环境变量,比如 PATH,HISTSIZE,PS1,HOSTNAME等默认环境变量。分别有以下配置文件:

  下图是环境变量文件的读取顺序:(用户每次重新登录的时候就会重新读取下面的配置文件)

  我们知道 $PATH 变量,用户每次登录,就会从上面的文件读取顺序读取所有配置文件,最后得到 $PATH 变量的值。

  注意:越往后面的配置文件,里面配置的变量内容优先级越高。

举报
领券