new file: _posts/2015-11-06-utawarerumono-alphabet-revealed.md
[GalaxyBlog.git] / _posts / 2013-05-03-multi-line-commenting-in-bash.md
blob822dd109cf9d7448a978f30631822291dfc43200
1 ---
2 layout: post
3 date: 'Fri 2013-05-03 14:04:22 +0800'
4 slug: "multi-line-commenting-in-bash"
5 title: "BASH中的多行注释"
6 description: ""
7 category: 
8 tags: [Tips, BASH, ZT, heredoc, Galaxy]
9 ---
10 {% include JB/setup %}
12 在Shell脚本中,单行注释是在前面`#`,例如`#生成全量索引`.
14 转自 [shell多行注释 @ chinaunix](http://blog.chinaunix.net/uid-24148050-id-3025447.html) 2011-11-22 21:02:08
16 把shell多行注释掉,有如下方法:
18 ## 第一种:基于 [here document](http://en.wikipedia.org/wiki/Here_document) 和 `:` 实现
20 如果被注释的内容中有反引号会报错
22     :<<BLOCK
23     ....被注释的多行内容
24     BLOCK
27 解决注释中有反引号的问题
29     :<< 'BLOCK
30     ....被注释的多行内容
31     BLOCK'
33 或者干脆只留单引号
35     :<< '
36     ....被注释的多行内容
37     '
40 ## 第二种:当注释内容中有括号时报语法错误错,但里面有反引号,引号时没有问题
42     :||{
43     ....被注释的多行内容
44     }
47 ## 第三种:会对注释内容中的括号引号等语法错误报错
49     if false ; then
50      ....被注释的多行内容
51     fi
55 -----
58 ## Heredoc与重定向输入
60 Here文档 为需要输入数据的程序(如 mail sor 或cat) 接收内置文本,
61 直至用户自定义的休止符。
63         cat << FINISH
64         Hello there $LOGNAME
65         The time is `date`
66         If you want to know who is god, type "echo \$LOGNAME"
67         FINISH
69         $ cat << FINISH
70         > Hello there $LOGNAME
71         > The time is `date`
72         > If you want to know who is god, type "echo \$LOGNAME"
73         > FINISH
74         Hello there
75         The time is Fri May  3 14:17:56 CST 2013
76         If you want to know who is god, type "echo $LOGNAME"
78 here 文档常被shell脚本用来生成 菜单 或 被用来 多行注释
82 ## 用 heredoc 和 `case` 命令生成菜单
84  # cat ./profile
86         echo "select a terminal type: "
87         cat << ENTER
88             1)    vt 120
89             2)    wyse50
90             3)    sun
91         ENTER
92         
93         read choice
94         
95         case "$choice" in
96         1)    TERM=vt120
97             export TERM
98             ;;
99         2)    TERM=wyse50
100             export TERM
101             ;;
102         3)    TERM=sun
103             export TERM
104             ;;
105         esac
106         
107         echo "TERM is $TERM"