共计 1417 个字符,预计需要花费 4 分钟才能阅读完成。
1、引号细说
我们之前的学习中给大家讲解了变量赋值及引用的操作,那么讲解中说了一下赋值中,如果值包含有空格,我们一定要加上引号,单引号和双引号都是可以的,比如:
1.1、使用双引号
bash [root@localhost ~]# VAR=”a b c” [root@localhost ~]# echo ${VAR} a b c
1.2、使用单引号
bash [root@localhost ~]# VAR=’a b c’ [root@localhost ~]# echo ${VAR} a b c
这样子一看其实区别是没有的,都可以达到一个变量赋值的目的。
1.3、单、双引号引用操作
定义一个变量的值时,我们还可以再次引用其他的变量,比如
bash [root@localhost ~]# NUM=666 [root@localhost ~]# VAR=”a b c ${NUM}”
我们先定义了变量 NUM。然后再定义第二个变量 VAR 时,可以把引用变量 NUM 的操作定义在 VAR 的值中。现在我们打印一下 VAR 变量值来看看效果
bash [root@localhost ~]# echo ${VAR} a b c 666
可以看到在打印 a b c 的同时也把 NUM 的变量值打印出来了,可以看出来在打印变量操作中,如果变量的值包含了打印其他变量的操作,那么会一同打印出来。这样的操作在实际工作中也是非常常用的。
现在我们再来看看如果使用单引号是什么结果。
bash [root@localhost ~]# NUM=666 [root@localhost ~]# VAR=’a b c ${NUM}’ [root@localhost ~]# echo ${VAR} a b c ${NUM}
可以明显看到 VAR 变量中的 NUM 的值并没有打印出来,而是原样返回了结果。因此我们可以知道
单引号会使 shell 忽略特殊字符的含义,双引号则可以解释 shell 中特殊符号原有的意义。这也就是我们常说的单引号是强引用,双引号是弱引用。
2、命令结果替换
命令结果替换操作就是把一个命令的结果赋值给另外一个变量的过程,比如 bash [root@localhost ~]# NUM=666 [root@localhost ~]# echo ${NUM} 666 [root@localhost ~]# echo ${NUMM}
我们还是定义了变量 NUM 的值为 666,而 NUMM 变量没有值,因此打印为空,现在我使用反引号 ` 来赋值给其他变量 bash [root@localhost ~]# NUMM=
echo ${NUM}` [root@localhost ~]# echo ${NUMM} 666
反引号就是先执行反引号引起来的命令,把这个命令执行完毕后再执行其他的操作。
比如我们这里就是先 echo 打印 NUM 变量的值,然后把这个值再次赋值给 NUMM 变量,因此现在 NUMM 也是有变量值了,这就是将命令结果作为变量值的一个操作。
反引号是键盘上 ESC 下面的一个按键,反引号等效于使用 $(),都是用于执行 shell 命令的,比如
bash [root@localhost ~]# ps aux | grep bash | head -1 | awk ‘{print $2}’ 6283 [root@localhost ~]# PID=$(ps aux | grep bash | head -1 | awk ‘{print $2}’) [root@localhost ~]# echo $PID 6283
我们上面是第一条命令是获取 bash 进程号,使用 $()就是先把此进程号获取出来,然后赋值给 PID 变量,最后我们打印出来结果,一切符合预期。