Linux相关知识之bash

bash中变量的设定

注:相关知识来自“鸟哥的Linux私房菜”

  1. 变量与变量内容用等号[=]连结,如下:
myname=VBird
  1. 等号两边不用直接用空格符,如下:
# 错误事例
name = VBird
myname= VBird Tsai
  1. 变量内容若有空格符可以用双引号["]或单引号[‘]将变量内容结合起来,但
    双引号内的特殊字符如$,可以保有原本特性:
var="lang is $LANG" # echo $var 可以得到 lang is en_US

单引号内的特殊字符仅表示一般字符(纯文本):

var='lang is $LANG' $ echo $var 可以得到lang is $LANG
  1. 若变量为扩增变量时,则用[$变量名称] 或 [${变量}] 累加内容:
PATH="$PATH":/home/bin

-------------------------------实例分割线-------------------------------

# 范例一:设定一发量 name ,且内容为 VBird
[root@www ~]# 12name=VBird
-bash: 12name=VBird: command not found <==屏幕会显示错误!因为不能以数字开头!
[root@www ~]# name = VBird <==还是错误!因为有空格!
[root@www ~]# name=VBird <==OK的啦!

# 范例二:承上题,若发量内容为 VBird's name 呢,就是发量内容含有特殊符号时:
[root@www ~]# name=VBird's name
# 单引号与双引号必须要成对,在上面癿讴定中仅有一个单引号,因此当你挄下enter 后,
# 你还可以继续输入变量内容。这与我们所需要的功能不同,失败啦!
# 记得,失败后要复原请按下 [ctrl]-c 结束!
[root@www ~]# name="VBird's name" <==OK 的啦!
# 指令是由左边向右找->,先遇到的引号先有用, 因此,单引号会失效
[root@www ~]# name='VBird's name' <==失败的啦!
# 因为前两个单引号已成对,后面就多了 一个单引号!因此也就失败了!
[root@www ~]# name=VBird\'s\ name <==OK的啦!
# 利用反斜杠 (\) 跳脱特殊字符,例如单引号与空格键,这也是 OK的啦!

#范例三:我要在 PATH 这个发量当中『累加』 :/home/dmtsai/bin 这个目录
[root@www ~]# PATH=$PATH:/home/dmtsai/bin
[root@www ~]# PATH="$PATH":/home/dmtsai/bin
[root@www ~]# PATH=${PATH}:/home/dmtsai/bin
# 上面这三种格式在 PATH 里头的设定都是 OK 的!但是底下的例子就错误的

#范例四:连接范例三,我要将 name 的内容多出 "yes" 呢?
[root@www ~]# name=$nameyes
# 知道了吧?如果没有双引号,那么发量成了啥?name的内容是 $nameyes 这个变量!
# 呵呵!我们可没有设定过 nameyes 这个变量!所以,应该是底下这样才对!
[root@www ~]# name="$name"yes
[root@www ~]# name=${name}yes <==以此例较佳!

猜你喜欢

转载自blog.csdn.net/xw2017/article/details/82839285