在Linux中双引号可以取消分隔符的转义,空格算不算?能不能举个例子??
还有,find "/home/tmp" -name "*.*" -atime +10 -ok rm -f {} \对于这条shell语句中的"*.*",不是说双引号取消通配符的作用吗,那么它不就成了寻找*.* 这个文件了吗?
双引号里可以套变量,单引号里不能套变量。
Linux的三中引号:双引号 " " ,单引号 ' ', 还有就是反引号 ` `
单引号和双引号的作用是差不多的,在里面的结果都是字符串,比如
a="date" ,b='date' 这两个是一样的。
反引号的作用就不一样了,反引号是把里面的当作一个命令来执行,比如
c=`date`
当 echo $a $b $c的时候 结果就分别是
date date 2014-11-1 20:33
扩展资料:
Linux *** 作系统是基于UNIX *** 作系统发展而来的一种克隆系统,它诞生于1991 年的 [Linux桌面] 10 月5 日(这是第一次正式向外公布的时间)。以后借助于Internet网络,并通过全世界各地计算机爱好者的共同努力,已成为今天世界上使用最多的一种UNIX 类 *** 作系统,并且使用人数还在迅猛增长。
这个问题表面你不会 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 了……
看看下面这个示例就能明白:
>在shell命令中有特殊含义,用于标准输出的重定向。此例中,后面未指明重定向的目标文件(直接敲回车,会将换行符newline认为是目标文件),所以报错。
在>前面加上\,就可以对>进行转义,即屏蔽其特殊含义,仅表示字符本身的字面含义。于是,此例中正确输出了 >符号。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)