BASH SHELL中变量分为

1、本地变量(局部变量):仅仅对当前shell进程有效

2、环境变量(全局变量):不仅对当前shell进程有效,对子进程也有效

3、位置变量:类似$1 $2 $@ 表明变量位置的

4、特殊变量:类似$$ $?代表一些特别意义的



变量的显示:echo 变量名称

shell获取docker中环境变量 shell读取环境变量_数据

如图显示变量Name 为Billy



变量的取消:unset 变量名称

shell获取docker中环境变量 shell读取环境变量_数据_02

取消变量Name后变量不显示了




查看环境变量:env(export,printenv)

shell获取docker中环境变量 shell读取环境变量_数据_03


查看所有变量(包括环境变量和自定义变量):set

shell获取docker中环境变量 shell读取环境变量_数据_04


变量转换:export

Export 变量名称

将变量转换为环境变量


变量读取:read

-p:接提示符

-t:接等待的秒数


shell获取docker中环境变量 shell读取环境变量_环境变量_05


通过图发现我们输入–t10 的时候过了10秒后没有输入进程停止了


变量声明:declare

-i:将后面的变量定义成整数类型

-a:将后面的变量定义成数组类型

-x:将后面的变量变成环境变量,用法和export一样

-r:将变量设置成readonly类型,既不可以更改内容,也不能重新设置






例一:让变量sum进行加法运算

shell获取docker中环境变量 shell读取环境变量_数据_06

由于变量类型默认为字符串类型的,如果不指定变量类型,那么100+200+300是一个字符串而不是一个计算的式子。


例二:将sum设置为环境变量

shell获取docker中环境变量 shell读取环境变量_字符串_07

例三:将sum变为只读属性,不可改动

shell获取docker中环境变量 shell读取环境变量_数据_08

例四:创建数组变量

shell获取docker中环境变量 shell读取环境变量_shell获取docker中环境变量_09



变量的测试

判断一个变量是否存在

variable=${variable-default}

若变量已存在,则variable=variable

若变量不存在,则variable=default

shell获取docker中环境变量 shell读取环境变量_数据_10



变量的删除

echo ${path#/*local/bin:}中,#代表从前面开始向右删除,且仅删除最短的那个

shell获取docker中环境变量 shell读取环境变量_shell获取docker中环境变量_11


echo ${path#/*:} echo ${path##/*:}

shell获取docker中环境变量 shell读取环境变量_数据_12

#:从开头符合替换文字的“最短的”那一个

##:从开头符合替换文字的“最长的”那一个


shell获取docker中环境变量 shell读取环境变量_数据_13

%:从尾部符合替换文字的“最短的”那一个

%%:从尾部符合替换文字的“最长的”那一个


总结:

${变量#关键字}:若变量内容从头开始的数据符合关键字,则将符合的最短数据删除

${变量##关键字}:若变量内容从头开始的数据符合关键字,则将符合的最长数据删除

${变量%关键字}:若变量内容从尾开始的数据符合关键字,则将符合的最短数据删除

${变量%%关键字}:若变量内容从尾开始的数据符合关键字,则将符合的最长数据删除


变量的替换

例:将path变量中的sbin替换成大写SBIN

shell获取docker中环境变量 shell读取环境变量_字符串_14

shell获取docker中环境变量 shell读取环境变量_字符串_15

总结:

${变量/旧字符串/新字符串}:                                                

若变量内容符合旧字符串,则第一个旧字符串被新字符串替换

${变量//旧字符串/新字符串}:

若变量内容符合旧字符串,则所有的旧字符串被新字符串替换