Linux中shell命令中引号的分类

在shell中引号分为三种:单引号、双引号、倒引号。

1.双引号:
由双引号括起来的字符(除KaTeX parse error: Expected 'EOF', got '\)' at position 13: 、倒引号(、)和反斜线(\̲)̲外)均作为普通字符对待。这三个…表示变量替换,即用预先指定的变量值代替KaTeX parse error: Expected 'EOF', got '\仅' at position 19: …;倒引号`表示命令替换;反斜线\̲仅̲当其后的字符是“”,“`”,“ " ”," "或换行符之一是,“\”才是转义字符。转移字符告诉其后面的那个字符进行特殊处理,知识当做普通字符。
双引号的作用实例:
$cat ex3
echo "current directory is ‘pwd’ "
echo "home directory is H O M E " e c h o " d i r e c t o r y ′ HOME" echo "directory ' HOME"echo"directoryHOME’ "
$ ex3
current directory is /home/mengqc/prog
home directory is /home/mengqc
file*.?
directory ‘/home/mengqc’
有脚本ex3看出,第一个echo语句中,在双引号括起来的字符串中包括’pwd’。执行该语句时,先执行倒引号括起来的命令pwd,并将结果代替’pwd’。从而得到输出结果的第一行。
第二个echo语句中,双引号中有 H O M E , 执 行 时 先 以 H O M E 环 境 变 量 的 值 代 替 HOME,执行时先以HOME环境变量的值代替 HOME,HOMEHOME,然后显示整个参数字符串。
第三echo语句中,双引号中的字符都作为普通字符出现,所以执行结果如输出的第三行所示。
第四个echo语句中,双引号中有’ H O M E ′ , 此 时 , 单 引 号 仍 作 为 普 通 字 符 出 现 , 而 HOME',此时,单引号仍作为普通字符出现,而 HOMEHOME表示引用过HOME的值。因而执行结果如输出的第四行所示。

2.单引号:
单引号括起来的字符都作为普通字符出现。例如:
$str='echo “directory is $HOME” ’
$ echo $str
echo “directory is $HOME”
其结果是把字符串“echo "directory is H O M E " ‘ 作 为 整 体 赋 给 变 量 s t r 。 由 于 使 用 了 单 引 号 , 所 以 命 令 名 e c h o 及 HOME"‘作为整体赋给变量str。由于使用了单引号,所以命令名echo及 HOME"str使echoHOME都作为普通字符,失去其原有的特殊意义。
又如:
$echo ‘The time is date ,the file is $HOME/abc’
The time is date, the file is $HOME/abc
可见,echo命令行中被单引号括起来的所有字符都照原样显示出来,特殊字符也失去原来的意义。
3.倒引号
倒引号括起来的字符串被shell解释为命令行,在执行时,shell会先执行官该命令行,并以它的标准输出结果取代整个倒引号部分。在前面实例中已经见过。例如:
$echo cuttent directory is pwd
current directory is /home/mengqc
shell执行此命令时,先执行pwd中的命令pwd,将输出结果/home/mengqc取代pwd这一部分,最后输出替换后的整个结果。
利用倒引号的这种功能可以进行命令置换,即把倒引号括起来的命令的执行结果赋给执行变量。例如:
$today=date
$echo Today is $today
Today is 2016年 04月 02日 星期六 09:38:39 CST
又如:
$users=who|wc-1
$echo The number of users is $users
The number of users is 5
可以看出,进行命令置换时,倒引号中可以是单条命令或多个命令的组合,如管道线等。另外,倒引号还可以嵌套使用。但应注意,嵌套使用时内层的倒引号必须用反斜线()将其转义。例如:
$Number =echo The number of users is \who|wc-1`$echo $Nuser The number of users is 5 如果内层倒引号不用其转义形式,而直接以原型出现在该字符串中,写成如下形式: $Number1=echo The number of users is who|wc-1 `
回车后,将出现:
0
接着输出:
$echo $Nuser1
将显示一个空行。这表明,它没有按我们想想的情况执行。
反斜线()是转义字符,它能把特殊字符变成普通字符。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值