shell脚本中单引号和双引号的区别

shell脚本中单引号和双引号的区别,第1张

shell脚本中的单引号和双引号一样都是字符串的界定符,而不是字符的界定符。单引号用于保持引号内所有字符的字面值,即使引号内的\和回车也不例外,但是字符串中不能出现单引号。(注意是所有,只是单引号本身不能够出现在其中)。

双引号用于保持引号内所有字符的字面值(回车也不例外),但以下情况除外:

$加变量名可以取变量的值

反引号仍表示命令替换

\$表示$的字面值

\`表示`的字面值

\"表示"的字面值

\\表示\的字面值

除以上情况之外,在其它字符前面的\无特殊含义,只表示字面值。

从上就可以看出单引号和双引号的区别。下面举几个例子:

可见,单引号中完全是保持字符串的原型输出,而双引号进行了命令替换。

由上可见虽然单引号和双引号都是字符串的限定符,但还是有所区别。

shell中单引号、双引号、反引号的使用在编写shell脚本时,会经常地使用到单引号、双引号、反引号这些特殊的符号。它们在shell中有着不同的作用,但容易被误用和引起混乱。简单总结一下三者的使用和区别。单引号它关闭shell中所有的特殊符号使用和解释,即单引号间的内容全部以普通字符的含义进行文本使用和解释,不管是特殊字符

$

,还是转义字符之类的。例子:1~$

a=12test='this

is

a

$a

/$

`date`'echo

$test2this

is

a

$a

/$

`date`双引号它关闭shell中大部分的特殊符号,但是某些保留,比如

$

,转义字符

/(不包括/n,/t之类),反引号字符,单引号字符在双引号中时作为普通字符,不具有上面的功能作用。例子:01~$

a=12test=this

is

a

$a

/b

`date`echo

$test02this

is

a

12

/b

Thu

Mar

21

15:24:45

HKT

20130304~$

a=12test='this

is

a

$a

/b

`date`'echo

$test05'this

is

a

12

/b

Thu

Mar

21

15:32:09

HKT

2013'0607~$

a=12test=this

is

a

$a

/n

`date`echo

$test08this

is

a

12

/n

Thu

Mar

21

15:40:09

HKT

20130910~$

a=12test=this

is

a

$a

/$

`date`echo

$test11this

is

a

12

$

Thu

Mar

21

15:40:38

HKT

2013单引号、双引号用于把带有空格的字符串赋值给变量,如果没有单引号或双引号,shell会把空格后的字符串解释为命令,即把空格作为变量赋值的结束。1~$

a=13test1=this

is

a

$a

/b

`date`

echo

$test12is:

command

not

found特别注意:在shell脚本中进行变量的赋值时,变量名、等号和变量值之间不能有空格,否则就是上面一样的错误。反引号它的作用是命令替换,将其中的字符串当成shell命令执行,返回命令的执行结果,见上面的例子。反引号包括的字符串必须是能执行的命令,否则会出错。例子:1~$

a=12test=`this

is

a

$a

/b

`date``echo

$test2No

command

'this'

found,

did

you

mean:3Command

'thin'

from

package

'thin'

(universe)4this:

command

not

found5date符号$(

)的作用和反引号的一样,都是命令替换:1~$

echo

$(date)2Thu

Mar

21

15:54:15

HKT

2013反斜杠反斜杠一般用作转义字符,如果echo要让转义字符发生作用,就要使用-e选项,且包含转义字符的字符串要使用双引号1~$

echo

this

is

a

/n

test2this

is

a

/n

test3~$

echo

-e

this

is

a

/n

test4this

is

a5test反斜杠的另一种作用,就是当反斜杠用于一行的最后一个字符时,shell把行尾的反斜杠作为续行,这种结构在分几行输入长命令时经常使用。

1、linux shell中的变量一般定义格式为:var=value。其中var是变量名称,=是赋值,value是给变量赋的值。比如下面的变量定义。

a=12 

b="hello world"

2、注意变量名称的第一个字符不可以是数字,但是可以是下划线。如下示例则为非法的变量名。

3、要使用变量的值,在变量前面加上$符号即可。比如下面的示例:

123=123 //这是错误的变量名称

_123=123//这是合法的。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/bake/11854686.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存