shell编程(2) 变量
查看全部的全局变量:env 或 printenv
全局变量可以用于进程的所有的子进程
#!/bash/profile
#
#!用来表示该文件是可执行的 shell 脚本,/bin/profile是指定要使用的 Shell,也就是命令解释器,即用于执行脚本的程序
三种创建全局变量的方式
-
export 变量名=value
-
变量名=value;export 变量名 #此方法首先定义了一个局部变量,之后导入到全局变量中
-
declare -x 变量名=value
ps:对于全局变量来说,在子 shell 中修改全局的变量值,这不会影响到父shell
环境变量的永久化
当你想要在当前目录下执行该目录下的可执行文件,执行如果报错,那么究其原因极有可能就是:该命令的可执行文件的目录不在 PATH 环境变量所包含的目录中
-
向 PATH 添加新的路径的方法,且该方法是临时方法
echo $PATH #输出看一下当前的PATH
PATH=$PATH:路径 #向PATH中添加新的路径
-
在 ~/.bash_profile 中直接修改,记得修改之后一定要 source 一下让其生效
alias 的使用
alias 可以重新定义本来的 shell 命令,直接在终端上输入 alias可以查看当前 shell 中所有现有的别名
例:alias aaa='echo "hello world"; ls'
将别名持久化,用户需要在其 ~/.bashrc 中修改,记得用 source 一下让其生效
命令替换
含义:在shell中,我们可以将输出赋予给变量。
例子:
echo "today:`date`"
输出:today:Thu Feb 16 14:45:28 CST 2023
echo "today:$(date)" #注意这里的()是必须有的
today:Thu Feb 16 14:47:00 CST 2023
综上所述,有两种方法可以将命令输出赋予给变量
- 使用反引号 ``
- 使用 $()
echo输出
转义字符\可以取消紧跟在该字符后面的单个字符的特殊含义,**单引号保留**其括起的==所有字符==的**字面含义**。我们可以这样理解,当语句中需要使用多个特殊字符的字面含义时,需要使用大量的转义字符,这样很麻烦,单引号的出现就解决了这个麻烦。与单引号不同,**双引号的区别在于双引号不保留**美元符号==$==、反引号==``==和反斜杠==\\==的字面值,即 使用**双引号**括起时,美元符号和反引号**保留其特殊含义**,并且仅当反斜杠前面是 $ 、反引号、双引号、反斜杠或换行符时,才会保留反斜杠字符的特殊含义。(单引保留,双引不保留)
echo 命令可用单引号或双引号来划定文本字符串
echo "it's me.ok" 结果:it's me.ok
echo it's' me.ok 结果:its me.ok
环境变量和用户变量
-
环境变量使用时在名称前加上 $ 即可;
echo "I am $year years old" $year=18
-
用户变量
用户的变量可以是任何由字母、数字或下划线组成的文本字符串,长度不能超过 20,用户的变量区分大小写。在变量使用时,我们是通过使用$VARIABLENAME 这种方式来引用 VARIABLENAME 的值。$VARIABLENAME 语法是用花括号括起。first_=Jane last_name=rose echo $first_$last_name 输出:Janerose
加上{}之后:
first_=Jane
last=rose
echo ${first}_$last
输出:Jane_rose