shell单引号与变量

<span style="white-space:nowrap;">&nbsp; &nbsp; &nbsp;&nbsp;近期公司申请了一大批连号的域名,我这里以test00.com~test99.com代替。配完DNS和A记录,接下来又</span>



<span style="white-space:nowrap;">轮到写apache的虚拟主机规则。这么多的域名一个一个去写肯定要搞死人的,脑子一转,计上心头。我们</span>



<span style="white-space:nowrap;">至少有N种方法去实现:</span>



<span style="white-space:nowrap;">&nbsp; &nbsp; &nbsp;&nbsp;首先想到的是利用宏来实现,比如平时我用宏最多的几个带宏功能的工具是vim、notepad++、UltraEdit-32</span>



<span style="white-space:nowrap;">还有word(不过word里的我到未经常用过),不过vim里N久没用,不记得了,在notepad小试了几下,没达</span>



<span style="white-space:nowrap;">到要的效果。</span>



<span style="white-space:nowrap;">&nbsp; &nbsp; &nbsp;&nbsp;接着想到利用shell定义一个函数来实现。不过公司这边催的太急,干脆也不用什么函数和宏了,直接最简单</span>



<span style="white-space:nowrap;">的shell里的echo吧 !不过在使用echo 时发现变量在单引号里是不传递的,这时想到要用两个单引号才行。</span>



<span style="white-space:nowrap;">具体代码如下:</span>



<span style="white-space:nowrap;"> </span>

<

pre class=”prettyprint lang-bsh”>#!/bin/bash
for ((site=00;site<100;site++))
do
echo ‘
echo ‘ ServerAdmin test@361way.com ‘
echo ‘ DocumentRoot “d:/wwwroot/group/www.test’${site}’.com” ‘
echo ‘ ServerName www.test’${site}’.com’
echo ‘
echo ‘ Options FollowSymLinks’
echo ‘ AllowOverride None’
echo ‘ Order allow,deny’
echo ‘ Allow from all’
echo ‘

echo ‘

echo ‘
echo ‘ ServerAdmin test@361way.com’
echo ‘ ServerName test’${site}’.com’
echo ‘ RewriteEngine on’
echo ‘ RewriteRule ^(.*)$ http://www.test’${site}’.com$1 [R=301,L]’
echo ‘

echo -e “n”
done

<span style="white-space:nowrap;">注:其实上面的脚本并不能实现在10之前的数字前加0的,因为本文主要是讲单引号双引号和变量的关系的,</span>



<span style="white-space:nowrap;">所以我这边也就没有修改。具体想在10之前的数字加0,可以加一个if判断实现,也可以通过另外一个工具printf</span>



<span style="white-space:nowrap;">实现,具体可以参看我的另外一个例子——<a href="https://www.361way.com/jia0/1258.html" target="_blank" rel="noopener">批量显示00到99——给10之前的数加0</a>。</span>



<span style="white-space:nowrap;">shell中单引号、双引号和两个双引号的区别,看下面的例子:</span>



<br />



<br />



<span style="white-space:nowrap;"><span style="white-space:nowrap;"> </span></span>
[root@test] a=55
[root@test] echo $a
55
[root@test] echo '$a'
$a
[root@test] echo ''$a''  #注意此处是两个单引不是一个双引
55

       由上面的例子不难看出,双引号是不会屏蔽对变量和某些特殊符号的转义的,而单引号里的所有内容都会原封不对的输出

<br />



<br />



<span style="white-space:nowrap;"><span style="white-space:nowrap;"><span style="white-space:nowrap;">,而单引号里再用单引号将变量引起来,变量就又可以正常的显示,有点像数学里的负负为正。</span><br />

<br />



<br />



<span style="white-space:nowrap;"><br />

shell单引号与变量》有2条评论

  1. 双引号中的双引号, 理解成’负负得正’ 只怕不合适吧.
    理解成 多对引号连接起来似乎更好.

  2. 不过在使用echo 时发现变量在单引号里是不传递的,这时想到要用两个单引号才行。解决了我的问题。本来以为要愁死我的。

回复 wenlibin 取消回复

您的电子邮箱地址不会被公开。 必填项已用*标注