文档标记 here document

   今天说shell的here document,何为here document?答:“这是文档”!。答案很简单,就跟易经里面解释卦一样,“卦者,挂也”!

   在自动化构建一些代码时,here document技术非常常用,它在各种动态语言中使用和表现都类似。
   here document就是告诉程序:
 
  
  
  
  
  1. <<EOF 
  2. ... 
  3. ... 
  4. EOF 
   这个对符号之间的内容就是一段文档,不是程序。最后记得,here document是一种语法!和if,where一样,都是语法!
   来看看here document的具体使用:
1、写入内容到文件中:
 
  
  
  
  
  1. $ cat cat.sh 
  2. #!/bin/bash 
  3. file="data.txt" 
  4. cat > $file <<EOF 
  5. hello c 
  6. hello perl 
  7. hello ruby 
  8. hello erlang 
  9. EOF 
   这里就会把EOF之间的内容写入data.txt文件中,会覆盖data.txt中原来的内容;如果要追加的话,将 cat > $file 修改为 cat >> $file。
2、变量替换
 
  
  
  
  
  1. #!/bin/bash 
  2. file="data.txt" 
  3. lang=(c erlang perl ruby shell) 
  4. cat > $file <<EOF 
  5. ${lang[*]} 
  6. EOF 
  这里位于here document中的变量${lang[*]}会被替换和计算.
3、关闭变量替换
 
  
  
  
  
  1. #!/bin/bash 
  2. file="data.txt" 
  3. lang=(c erlang perl ruby shell) 
  4. cat > $file <<"EOF" 
  5. ${lang[*]} 
  6. EOF 
  这里变量${lang[*]}就不会被替换和计算了;使用perl的同学需要注意,如果不要变量被解释,需要用单引号将EOF括起来;
  通过这三点,我们就可以用shell来生成我们需要的文件了,比如生成其他程序的源代码!
4、shell代码的块注释
 
  
  
  
  
  1. #!/bin/bash 
  2. # 块注释 
  3. : <<COMMENT 
  4. for((i=0;i < 10;i++)) 
  5. do 
  6.     echo $i 
  7. done 
  8. COMMENT 
  这里使用了匿名here document技术,实现了在shell中进行块注释,for循环不会被解释和运行。

你可能感兴趣的:(shell,document,here)