• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
白_胖_子
Linux学习的生活就是这么朴实无华且枯燥
博客园    首页    新随笔    联系   管理    订阅  订阅

单引号‘’双引号“”反向单引号``的区别

单引号 ' '

  • 六亲不认,单引号中的所有内容都被认为是字符串
[21:23:26 root@C8-3-55 ~]#echo 'echo $LANG'
echo $LANG

双引号 " "

  • 双引号可以识别变量,不能识别命令
[21:37:14 root@C8-3-55 ~]#echo "echo $LANG"
echo zh_CN.utf8

反向单引号 ` `

  • 即能识别其中的命令,又能识别其中的变量,但不支持嵌套

  • 聪明的孩子总是比较反叛

[21:40:47 root@C8-3-55 ~]#echo `echo $LANG` ## 单引号内echo和$分别被识别成命令和变量
zh_CN.utf8
[21:41:01 root@C8-3-55 ~]#echo `echo `echo $LANG`` ## 嵌套中最内层echo 被识别为命令,但外层echo没有被识别
echo zh_CN.utf8
[21:41:34 root@C8-3-55 ~]#echo `echo "echo $LANG"` ## 内层嵌套双引号,外层echo 没有被识别
echo zh_CN.utf8
[21:41:45 root@C8-3-55 ~]#echo `echo 'echo $LANG'` ## 内层嵌套单引号,外层echo没有被识别
echo $LANG
[21:41:57 root@C8-3-55 ~]#echo `echo $(echo $LANG)` ## 内层嵌套了$()后,外层echo被识别成命令
zh_CN.utf8

放在反向单引号内的一定是命令,否则会报错

$()

  • 功能类似反向单引号

  • 既能识别其中的命令和变量,又支持嵌套

[21:42:12 root@C8-3-55 ~]#echo $(echo 'echo $LANG')
echo $LANG
[21:42:41 root@C8-3-55 ~]#echo $(echo "echo $LANG")
echo zh_CN.utf8
[21:43:06 root@C8-3-55 ~]#echo $(echo `echo $LANG`)
zh_CN.utf8
[21:43:18 root@C8-3-55 ~]#echo $(echo $(echo $LANG))
zh_CN.utf8

不管内层嵌套的是什么,$()外层的echo都会被识别。

放在反向单引号 ` ` 和$()内部的必须是可以执行的命令

  • 否则会报错
[21:43:36 root@C8-3-55 ~]#echo `root`
-bash: root: 未找到命令

[21:54:29 root@C8-3-55 ~]#echo `print root`
-bash: print: 未找到命令

[21:54:36 root@C8-3-55 ~]#echo $(root)
-bash: root: 未找到命令
* * * 胖并快乐着的死肥宅 * * *
posted @ 2021-03-12 10:53  白_胖_子  阅读(1114)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3