关于linux中的倒引号的嵌套使用

当在linux中要嵌套使用倒引号``时,

为什么里面的倒引号``要加\转义呢?
按理说加了反斜杠\,倒引号``就发挥不了作用.

无法理解,
请高手指教,谢谢!!!
不懂的人别乱说!
我不是想问转义字符的含义!!!
转义字符使得它后面的字符被看作一个普通字符,而不再有特殊含义,也不会被系统给解析
----这个我当然知道!

如你所说:
****
export name="Linux"
echo "This is $name."
----里面的 $name 依然会被当成变量处理
***

再看看C语言:
***
printf("this is %c",a)
----里面的%c同样也被当作对变量a的引用
***

你所给出的例子只表明:
双引号" "的用法,在Linux和C语言中是十分类似的!!!
这恰恰不能解释,为什么当倒引号嵌套使用时,里面的倒引号要使用转义\`

更加失望!!!

这个问题表面你不会 C 语言。
转义符就表示这个符号后面的字符,不在代表他的基础意义,而是转变为另一个意思。

在所有系统里面,引号 ' " ` 。都有特殊用途。
用来引出特殊目的“字串”。
但有的时候,你明明需要字串里面出现的就是引号,但引号已经作为特殊用途,会被程序识别为字串开始或者结束符号,这个怎么解决?
就用 \ 进行转义,表面他后面的引号不再是字符串表示符。而是作为普通字符处理。

转义符还有很多别的用途,用来转变后面那个字符的意思。如果你学过 C 语言,这个问题你就不需要来问了。
比如 \n 换行。\\ 就表示一个 \ 字符。
还有别的根据环境不同有不同的意思:
\^
\$
\%
\/
等等……
-----------------------
是你没说清楚好不好……

Linux 下面, shell 的字符串中有一些东西,是不需要进行像 C 那样必须独立出字符串才能调用这个特殊部分的功能的。shell 依然会去解释字符串中的内容,从而方便字符串的一些处理。
比如:
jiangtao@ubuntu:~$ export name="Linux"
jiangtao@ubuntu:~$ echo "This is $name."
This is Linux.
jiangtao@ubuntu:~$
里面的 $name 依然会被当成变量处理。
同样:
jiangtao@ubuntu:~$ echo "This is `uname`."
This is Linux.
jiangtao@ubuntu:~$ uname
Linux
jiangtao@ubuntu:~$
shell 会去运行 ` ` 中的命令,这个是 Linux 下面 shell 的一个特性。而不是所有字符串中都必须无条件的纳入字符串的真实内容。

不过如果你真的想不转义,有个特别的方法:
jiangtao@ubuntu:~$ export name="Linux"
jiangtao@ubuntu:~$ echo 'This is `uname`.'
This is `uname`.
jiangtao@ubuntu:~$ echo 'This is $name.'
This is $name.
jiangtao@ubuntu:~$
也就是不用双引号,而改用单引号来包括起字符串。但是强烈不推荐,再看代码的时候,会看晕的。

这个特性在很多 Linux 的解释行语言里,都被使用,比如 PHP 就可以字符串内直接使用变量。

看来与我预测的相反,你太会用 C 了……
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-04-24
''还是``,两者是不同的。``是命令引用,''表示引号中的内容作为字符串。不解释其中的特殊字符。
第2个回答  2009-04-24
当倒引号嵌套使用时:

abc=`echo abc is`pwd``
你以为系统会把`pwd`运算出来作为`echo abc is...`的一部分吗?
当然不是!

系统会把`echo abc is`作为一个命令运算出来,
再加上字符串pwd,
再加上空命令``

也就是说:
系统并不会把这种写法理解为嵌套,
而是会"就近匹配"倒引号,

要想达到嵌套的效果,里面的倒引号必须使用转义\本回答被提问者采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网