Linux学习之变量引用和作用范围

使用${变量名}或者$变量名就可以引用变量,$变量名其实是${变量名}的省略写法。
要是变量名后边还有其他字符就需要加上{},比如helloToBash这个变量的值是Hello Bash,而需要输出的字符串是“Hello Bashing”,这样就需要加上{},演示如下:
echo $helloToBashing输出为空,而echo ${helloToBash}ing正常输出为“Hello Bashing”。
在这里插入图片描述

变量名=变量值
使用let为变量赋值
将命令赋值给变量
将命令结果赋值给变量,使用$()或者``(两个单反引号)

使用这四种方法创建的变量只针对于当前终端或者说当前Shell生效,这是变量的作用范围,这里拿变量名=变量值进行验证一下。
ps可以看到当前的Shell的PID为19805
在这里插入图片描述

whospeak=parent在父Shell给变量whospeak赋值为parentbash进入一个子Shell,ps看一下Shell信息,echo ${whospeak}可以看到变量whospeak的值为空,就说明父Shell定义的变量在子Shell中不起作用,在然后重新执行whospeak=child
Linux学习之变量引用和作用范围_第1张图片

exit可以退出子Shell,ps看一下Shell信息,然后再执行echo ${parentString}
Linux学习之变量引用和作用范围_第2张图片

bash 脚本文件执行时,会产生一个子Shell,所以在脚本文件里边定义的变量,在当前Shell也不生效。

context="hello child"在当前Shell里边定义一个变量context,然后使用vim contexttest.shcontexttest.sh写入下边的内容:

#!/bin/bash

echo ${context}

最后输入EOF退出保存。

Linux学习之变量引用和作用范围_第3张图片

chmod u+rx contexttest.sh为脚本添加上读和可执行权限。
在这里插入图片描述

bash contexttest.sh/root/contexttest.sh都无法取到变量context的值。
在这里插入图片描述

source contexttest.sh. contexttest.sh可以取到变量context的值。
在这里插入图片描述

而可以使用export 变量就可以让子Shell使用父Shell定义的变量。
export context执行之后,再次执行bash contexttest.sh/root/contexttest.sh就可以取到变量context的值。
在这里插入图片描述

也可以在定义变量的时候,直接使用export 变量=变量值
Linux学习之变量引用和作用范围_第4张图片

此文章为7月Day 13学习笔记,内容来源于极客时间《Linux 实战技能 100 讲》。

你可能感兴趣的:(Linux基础学习,linux,学习,运维)