3.shell脚本基础笔记-shell变量

作者: 温新

分类: 【Linux】

阅读: 1378

时间: 2022-02-13 14:41:49

hi,我是温新,一名PHPer

什么是变量

变量:将字符串和数值等值赋予一个名称并将其保存在内存中,以便在其他其他使用这个名称访问其所表示的值。

变量命名规则:变量使用大/小写字母数字下划线组合。变量名不能以数字开头,不允许使用-进行连接。

定义变量与使用

定义变更

语法:变量名=值

注意:=号前后不能有空格制表符

使用变量

语法:$变量名

1)正常使用

使用该方式声明变量,变量类型固定为字符串类型。因此 值 不需要使用引号引起来,如果字符串有空格,则需要使用 ''或""包裹。

<span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(98, 151, 85) !important"># 声明变量</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">name</span><span style="box-sizing: border-box;color: rgb(86, 182, 194) !important">=</span>ziruchu</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">webname</span><span style="box-sizing: border-box;color: rgb(86, 182, 194) !important">=</span><span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">'zi ru chu'</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(98, 151, 85) !important"># 使用变更</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(232, 191, 106) !important">echo</span> <span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$name</span> <span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$webname</span></span>

注意:使用一个不存在的变量时,不会报错。如 echo $a

2){}变量和字符串之间的分隔

需要输出的结果是: my name is lucy

<span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">name</span><span style="box-sizing: border-box;color: rgb(86, 182, 194) !important">=</span>luc</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(232, 191, 106) !important">echo</span> my name is <span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$namey</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box"></span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(98, 151, 85) !important"># 输出结果 my name is</span></span>

使用{}进行分隔

<span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">name</span><span style="box-sizing: border-box;color: rgb(86, 182, 194) !important">=</span>luc</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(232, 191, 106) !important">echo</span> my name is <span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">${name}</span>y</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box"></span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(98, 151, 85) !important"># 输出结果 my name is lucy</span></span>

环境变量

什么是环境变量

若在已经定义了一些变量的状态下启动新的命令,则命令会从shell中继承一些变量。这些变量就是环境变量。

如:shell在执行一个命令时,会从当前进程中fork一个子进程,子进程从父进程继承的内容之就是环境变量。在父进程中设置的环境变量会被复制到子进程并子进程使用,但子进程中的命令不能访问shell中的普通变量。

export 设置环境变量

命令:export 将指定的变量设置成环境变量。

注意:环境变量名一般采用大写;环境变量可以当做变量使用。

<span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(98, 151, 85) !important"># 方式一:设置环境变量</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">CONFIG_FILE</span><span style="box-sizing: border-box;color: rgb(86, 182, 194) !important">=</span>/home/hello.sh</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(198, 120, 221) !important">export</span> CONFIG_FILE</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box"></span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(98, 151, 85) !important"># 变量赋值的同时将其设置为环境变量</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(198, 120, 221) !important">export</span> <span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">CONFIG_FILE</span><span style="box-sizing: border-box;color: rgb(86, 182, 194) !important">=</span>/home/hello.sh</span>

使用脚本设置环境变量

1)main.sh

<span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">#!/bin/bash</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box"></span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">CONFIG_FILE</span><span style="box-sizing: border-box;color: rgb(86, 182, 194) !important">=</span>/home/hello.sh</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(198, 120, 221) !important">export</span> CONFIG_FILE</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box"></span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(232, 191, 106) !important">sh</span> ./config.sh</span>

2)config.sh

<span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">#!/bin/bash</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box"></span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(232, 191, 106) !important">echo</span> <span style="box-sizing: border-box;color: rgb(224, 108, 117) !important">$CONFIG_FILE</span></span>

3)执行脚本:sh main.sh

main.sh脚本中,设置了环境变量且引入并执行了config.sh脚本;

config.sh中进程读取环境变量内容的操作;

当在执行main.sh脚本时,子进程config.sh会继承main.sh中设置的环境变量;

所以,输出的CONFIG_FILE中的内容。

特殊的shell变量

有些变量是系统已经预设好的,可以通过prentenv查看。下面是常用的环境变量。

PATH:保存shell启动命令时目录。

HOME:当前登录用户的用户主目录的绝对路径。

PWD:保存当前目录路径。

SHELL:当前登录用户的登录shell绝对路径。

BASH:保存 bash 命令的绝对路径。

BASH_VERSION:当前 bash 的版本信息。

LINENO:当前脚本所执行的脚本文件的行号。

忘记了,回过头来看看,总能想起什么

请登录后再评论