1-3使用变量与环境变量

1.3使用变量与环境变量

1.3.1预备知识

所有的应用程序和脚本都可以访问环境变量。可以使用envprintenv命令查看当前shell中所定义的全部环境变量

env
printenv
查看其它进程的环境变量
#假设查看进程名为:process
pgrep process #获取进程PID
12501 #PID

cat /proc/12501/environ

由于变量之间用\0来分隔,因此不好阅读。要想生成一份易读的报表,可以将cat命令的输出通过管道传给tr,将其中的\0替换成\n

$ cat /proc/12501/environ | tr '\0' '\n'

1.3.2实战演练

1.变量

可以使用等号操作符为变量赋值:

varName=value

如果变量带有空白字符,则要放入”“或者‘’

var="value"
echo $var
echo ${var}

#注意两边没有空格的等号是赋值操作符,加上空格的等号表示的是等量关系测试
var = "value" #wrong

可以在其它命令的双引号中引用变量值

#!/bin/bash 
#文件名:variables.sh
fruit=apple
count=5
echo "We have $count ${fruit}(s)"
2.export继承变量(子进程)

export命令声明了将由子进程所继承的一个或多个变量。这些变量被导出后,当前shell脚本所执行的任何应用程序都会获得这个变量。

标准环境变量PATH包含很多路径

echo $PATH
/home/menu/.local/bin:/home/menu/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin

echo $PATH | tr ':' '\n' #使用换行分隔
/home/menu/.local/bin
/home/menu/bin
/usr/local/bin
/usr/local/sbin
/usr/bin
/usr/sbin

而要在其中加一个变量,则可以这样,使用来分隔

PATH="$PATH:/home/user/bin"

另外还有一些众所周知的环境变量:HOME、PWD、USER、UID、SHELL等

**注意:**使用单引号时,变量不会被扩展

echo '$var'
$var #output

1.3.3 补充内容

1. 获取变量长度

可以使用$