shell单引号与变量
近期公司申请了一大批连号的域名,我这里以test00.com~test99.com代替。配完DNS和A记录,接下来又轮到写apache的虚拟主机规则。这么多的域名一个一个去写肯定要搞死人的,脑子一转,计上心头。我们至少有N种方法去实现:
首先想到的是利用宏来实现,比如平时我用宏最多的几个带宏功能的工具是vim、notepad++、UltraEdit-32 还有word(不过word里的我到未经常用过),不过vim里N久没用,不记得了,在notepad小试了几下,没达到要的效果。
接着想到利用shell定义一个函数来实现。不过公司这边催的太急,干脆也不用什么函数和宏了,直接最简单的shell里的echo吧 !不过在使用echo 时发现变量在单引号里是不传递的,这时想到要用两个单引号才行。具体代码如下:
1#!/bin/bash
2for ((site=00;site<100;site++))
3do
4echo '<virtualhost>'
5echo ' ServerAdmin [email protected] '
6echo ' DocumentRoot "d:/wwwroot/group/www.test'${site}'.com" '
7echo ' ServerName www.test'${site}'.com'
8echo '<directory>'
9echo ' Options FollowSymLinks'
10echo ' AllowOverride None'
11echo ' Order allow,deny'
12echo ' Allow from all'
13echo ' </directory>'
14echo '</virtualhost> '
15echo '<virtualhost> '
16echo ' ServerAdmin [email protected]'
17echo ' ServerName test'${site}'.com'
18echo ' RewriteEngine on'
19echo ' RewriteRule ^(.\*)$ http://www.test'${site}'.com$1 \[R=301,L\]'
20echo '</virtualhost>'
21echo -e "n"
22done
注:其实上面的脚本并不能实现在10之前的数字前加0的,因为本文主要是讲单引号双引号和变量的关系的, 所以我这边也就没有修改。具体想在10之前的数字加0,可以加一个if判断实现,也可以通过另外一个工具printf 实现,具体可以参看我的另外一个例子——批量显示00到99——给10之前的数加0。 shell中单引号、双引号和两个双引号的区别,看下面的例子:
1[root@test] a=55
2[root@test] echo $a
355
4[root@test] echo '$a'
5$a
6[root@test] echo ''$a'' #注意此处是两个单引不是一个双引
755
由上面的例子不难看出,双引号是不会屏蔽对变量和某些特殊符号的转义的,而单引号里的所有内容都会原封不对的输出,而单引号里再用单引号将变量引起来,变量就又可以正常的显示,有点像数学里的负负为正。
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/quotation-mark/1166.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.