1,  在shell编程中,单引号和双引号有着不同的意义。用单引号引起来的shell变量直接输出引号内的内容。用双引号引起来的变量输出变量的值。如果在$之前加上\,也可以直接输出变量,而不是变量值,即相当于单引号。看下面的一个例子:

  1. #!/bin/bash 
  2.  
  3. myvar="Hi there" 
  4.  
  5. echo $myvar 
  6. echo "$myvar" 
  7. echo '$myvar' 
  8. echo \$myvar 
  9.  
  10. echo Enter some text 
  11. read myvar 
  12.  
  13. echo '$myvar' now equals $myvar 
  14.  
  15. exit 0  

输出结果如下:

  1. $./variable 
  2. Hi there 
  3. Hi there 
  4. $myvar 
  5. $myvar 
  6. Enter some text 
  7. Hello world 
  8. $myvar now equal Hello world 

2, 在shell编程中变量默认都是string格式。当给一个变量直接赋值时,如果含有whilespace(包括空格、tab等),则需要用双引号引起来,如果不含,则可引可不引。但是,当变量是通过互动方式,即read从terminal输入值时,不管有没有空格,都不需要用引号。如下所示:
 

  1. $ var=Hello 
  2. $ echo $var 
  3. Hello 
  4. $ var="Hello World" 
  5. $ echo $var 
  6. Hello World 
  7.  
  8. read var 
  9. what is that? 
  10. $ echo var 
  11. what is that?