1, 在shell编程中,单引号和双引号有着不同的意义。用单引号引起来的shell变量直接输出引号内的内容。用双引号引起来的变量输出变量的值。如果在$之前加上\,也可以直接输出变量,而不是变量值,即相当于单引号。看下面的一个例子:
- #!/bin/bash
- myvar="Hi there"
- echo $myvar
- echo "$myvar"
- echo '$myvar'
- echo \$myvar
- echo Enter some text
- read myvar
- echo '$myvar' now equals $myvar
- exit 0
输出结果如下:
- $./variable
- Hi there
- Hi there
- $myvar
- $myvar
- Enter some text
- Hello world
- $myvar now equal Hello world
2, 在shell编程中变量默认都是string格式。当给一个变量直接赋值时,如果含有whilespace(包括空格、tab等),则需要用双引号引起来,如果不含,则可引可不引。但是,当变量是通过互动方式,即read从terminal输入值时,不管有没有空格,都不需要用引号。如下所示:
- $ var=Hello
- $ echo $var
- Hello
- $ var="Hello World"
- $ echo $var
- Hello World
- $ read var
- what is that?
- $ echo var
- what is that?