linux中的特殊符号$ ‘’ 反引号 反斜杠

news/2024/7/4 3:06:53

写在前面:Shell中的特殊字符有
$ 美元符 
\ 反斜杠 
` 反引号 
"双引号 
< ,>;,*,?,[,]

1、反引号``:命令替换
在输出一句话的时候,如果想中间加入命令输出结果,在反引号里面输入命令就可以做到,和$COMMAND是一样的。
[root@localhost ~]# echo today is `date +%F`
today is 2016-08-03
2、双引号"":弱引用,可以实现变量和命令的替换
在双引号中可以使用变量,用$COMMAND。
[root@localhost ~]# x=*
[root@localhost ~]# echo "$x"
[root@localhost ~]# echo "`date`"
3、单引号''强引用,不完成变量替换
在单引号中不能使用任何变量和命令。
[root@localhost ~]# x=*
[root@localhost ~]# echo '$x'
$x
[root@localhost ~]# echo '`date`'
`date`
4、$符号
作用1:用于引用变量内容变;等号赋值,变量赋值

作用2:用于行结束符

作用3:变量的间接引用;

作用4:变量的参数替换

作用5:特殊位置符
$0返回脚本名称,绝对路径;`basename $0`仅返回脚本名称,没有路径
1)echo $? 显示的是上一条指令退出状态 

2)echo "$?" 效果同上 
3)echo '$?' 显示的是$? 
4)echo \$? 显示的是$? 
5)echo "\$?" 显示的是$?
大家可能已经看出 $符号在双引号中具有特殊意义 双引号对$符号不起作用,而单引号可以将特殊字符的的特殊意义屏蔽掉,使其能显示为字符本身,反斜杠也可以将特殊字符的特殊含义屏蔽掉,使特殊字符失去特殊含义。
5.反斜杠\
反斜杠的作用是将特殊符号字符的特殊含义屏蔽掉,使其还是原字符。
A=1234 

echo \$A 显示为$A 如果不加\将显示为1234 
echo \` 显示为` 
echo \" 显示为双引号 
echo \\ 显示为\ 
6、` 反引号
反引号的功能是命令替换,将反引号中的字符串做为命令来执行,我们在用shell编程时经常用的到 将系统命令的执行结果赋给一个变量 

A=`date` 
echo $A 显示的不是date而是当时的时间串 
比如有一文件A的内容如下  
ABCDEFG 
1234456 
abcdefg
B=`cat A|grep 234`? # 检索文件A中含有字符串234的行 
echo $B 将显示为1234456 
echo "$B" 将显示为什么? 
echo "\$B" 将显示为什么?读者自己试试 
7、" 双引号
  在系统中有些特殊字符,为避免引用这些特殊字符 往往用双引号或单引号将这些特殊字符引起来,使其不具有特殊含义。 
  但有一部分特殊字符在引号中还是具有特殊含义,用双引号引起来是不起作用的。本文中所列的前四个特殊字符在双引号中还是特殊字符。为了使其不具有特殊含义一是用单引号引进来二是用\反斜线使其失去作用。
  比如我们想原样输出这些特殊字符 

echo """ 
echo "$" 
echo "\" 
echo "`" 

   以上不是你所期望的结果,因为双引号对它们不起作用,你只能这样才能输出这些特殊字符的原形 

echo '"' 
echo '$' 
echo '\' 
echo '`' 
或 
echo "\"" 
echo "\$" 
echo "\\" 
echo "\`" 

将分别显示为 " $ \ `
8、其它特殊字符
1.单引号 (' ')  单引号,不具有变量置换的功能,即单引号会告诉shell忽略所有的特殊字符,

2.双引号(" ") 双引号,具有变量置换的功能,即双引号之要求忽略大多数特殊字符,除了$(使用变量前导符), \(转义符), `(反向引号)。

3.反向引号(` `): 位于键盘Tab键上面一行的键,用作命令替换(相当于$(...))

注:命令替换是指shell能够将一个命令的标准输出插在一个命令行中任何位置。

转载于:https://www.cnblogs.com/move-on-change/p/9515809.html


http://www.niftyadmin.cn/n/4557341.html

相关文章

批处理for语句中%%~xi是什么意思

在批处理文件中使用FOR命令时 不区分大小写for命令是一个比较复杂的命令 %%i就表示为一个变量 for语句中的变量必须用%%表示 您现在可以使用下列 选项语法: ~I -删除任何引号(") 主要用于参数在指定的范围内循环执行命令 如果环境变数 未被定义 扩充%I %~fI -将%I扩充到一…

A2-02-16.DML-A Practical Use of MySQL CROSS JOIN Clause

转载自&#xff1a;http://www.mysqltutorial.org/mysql-cross-join/ Home / Basic MySQL Tutorial / A Practical Use of MySQL CROSS JOIN ClauseA Practical Use of MySQL CROSS JOIN Clause Summary: in this tutorial, you will learn about the MySQL CROSS JOIN clause …

【转】Mcrypt响应慢的一个原因

上午的时候, 有同事来找我说上周新上线的一个使用mcrypt的脚本, 响应非常慢, 但是服务器的各项指标都正常, 不知道是什么原因. 经过了解, 一个简单的可重现的脚本如下: <?php $dmcryptText "dummy"; $key "foobar"; $size mcrypt_get_iv_size(MCRYP…

你知道批处理中for语句中%%~xi是什么意思么

我也不太清楚 几乎 可能 也许 好像 ||| 大概 %~$PATH:I 搜索 PATH 环境变量所列出的目录 也就是取%%i的扩展名部分其它的展开操作还有%~I 展开 %I %%~xi将%%i解开到扩展名 如%~dpI 只将 %I 展开到驱动器号和路径 %~zI 将 %I 展开到文件的大小 %~tI 将 %I 展开到文件的日期和时间…

为什么eclipse软件用不了

JavaHome 如:"C:/Program Files/Java" 双击path 就可以编辑变量了 你java程序的路径由于要和其他变量分开 你没有设置变量我的电脑→属性→高级&#xff08;环境变量&#xff09;系统变量里面有一个path设置 在设置变量值里面输入 在前面要加入" ; "就这样…

优先级队列例题

package priorityQueue; import java.util.; import java.time.; /* This program demonstrates the use of a priority queue. 数集&#xff0c;优先级队列会对队列里面的数组进行排序&#xff0c;从小到大。 */ public class PriorityQueueTest { public static void main(S…

关于跳出for的批处理

这个是因为你加了if " ||| break是跳出循环 continue就结束本次循环 在执行下一次循环 1 只能用call了 所以不能像c语言那样嵌套循环语句 因为你要换行 就和c语言一样的 就会退出程序 他会跳到:end这个语句后面正好没有语句了 当程序跳到空格的状态时 而我们的是退出循环执…

变量的就近原则

就近原则(Principle of Proximity)&#xff0d;把相关的操作放在一起&#xff0c;例如让注释靠近它所描述的代码&#xff0c;让控制循环的代码靠近循环本身等。变量的就近原则指尽可能在靠近第一次使用变量的位置声明和定义该变量。就近原则实际上也是变量的作用域最小化的一种…