定义字符串的时候,如果字符串包含空格,则需要使用引号。
上面的b没有赋值成功,是因为等号右边的字符串有空格。在字符串两边加上引号或者在空格前面加反斜杠,就可以成功赋值。
从上面的例子看,似乎单引号与双引号的作用是等同的,实际不然。
上面的例子中,先将a定义为Good,再将b定义为"$a morning"时(两边是双引号),a的值会被代入,或者说a的值被展开,b的值就成为Good morning。如果将b定义为'$a morning'时(两边是单引号),a的值不会被代入,单引号之间的内容被原封不动地赋给了b,b的值成为了$a morning。
下面将B定义为空格加morning,将A定义为Good:
可以这样定义C,使其值为Good morning:
或者,这样定义:
如果希望C的值为Good_morning(注意,Good与morning之间是下画线),是不是可以这样赋值呢?
可见,C的值是空。这是因为将C定义为$A_morning时,A_morning的值会被代入,虽然A是个已经有值的变量,但A_morning是一个未定义的变量,执行C=$A_morning之后,C被赋值为空,这不是用户想看到的结果。将变量A的两边加上大括号就可以解决这个问题:
A两边有了大括号,A就会被认为是一个变量名,系统不会再认为A_morning是一个变量名,A的值被代入,C的值就成为了Good_morning。大括号是变量名字的定界符。
上面的例子,project_name被定义为空,所以echo命令中的xx与yy之间实际上没有任何东西,echo命令的执行结果就是xxyy。
如果希望将project_name定义为一个空格,需要将空格用引号括起来:
下面的echo命令的执行结果中有一个空格介于xx和yy之间:(www.xing528.com)
如果空格不被引号括起来,即在等号右边输入一个空格再回车的话,project_name将被定义为空:
可见,将空格赋值给变量时,需要将空格用引号括起来,否则变量的值为空而不是空格。
一般情况下,系统认为单引号或者双引号应该成对出现,例如,输入echo′Good回车,系统不认为命令行输入完成,因此给出命令续行提示符>,直到遇到另一个单引号,系统才认为命令行输入完成。例如:
如果想显示It's a book这句话怎么办?先试着运行一下:
遇到了命令续行提示符>,系统在等待另一个单引号的出现。把含单引号的句子用双引号括起来,就可以正常显示了:
同样,把含双引号的句子用单引号括起来,即可以正常显示:
或者,在引号前面加反斜杠,单独的引号可以显示出来,而无需成对出现:
大括号除了可作为变量名的定界符,还有扩展功能。使用该功能时,需将一些字符串以逗号间隔,放在一对大括号中间。左大括号的前面可以有别的字符串,叫做前导;右大括号的后面也可以有别的字符串,叫做后继。大括号中的字符串与它们可以组成新的字符串,并保留原来的顺序。例如:
大括号扩展可以嵌套。例如:
使用大括号扩展,有时可以使命令更快捷。例如,同时创建三个子目录:
这条命令比mkdir-p/tmp/mail/jack/tmp/mail/mike/tmp/mail/rose紧凑,而且更容易让人看出来这三个子目录都在/tmp/mail下面。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。