树叶云UNIX教程:UNIX Shell引用机制

Shell引用机制

元字符

UNIX Shell 提供有特殊意义的各种元字符,同时利用他们在任何 Shell 脚本,并导致终止一个字,除了引用。

举个例子,在列出文件中的目录时 匹配一个一元字符,并且 * 匹配多个字符。下面是一个 Shell 特殊字符(也称为元字符)的列表:

    * ? [ ] ' " \ $ ; & ( ) | ^ < > new-line space tab

在一个字符前使用 \ ,它可能被引用(例如,代表它自己)。

例子

下面的例子,显示了如何打印 * 或

    #!/bin/sh

    echo Hello; Word

这将产生下面的结果。

    Hello
    ./test.sh: line 2: Word: command not found

    shell returned 127

现在,让我们尝试使用引用字符:

    #!/bin/sh

    echo Hello\; Word

这将产生以下结果:

    Hello; Word

$ 符号是一个元字符,所以它必须被引用,以避免被 Shell 特殊处理:

    #!/bin/sh

    echo "I have \$1200"

这将产生以下结果:

    I have $1200

是以下四种形式的引用:

QuotingDescription
单引号所有在这些引号之间的特殊字符会失去它们特殊的意义
双引号所有在这些引号之间的特殊字符会失去它们特殊的意义除了以下字符:
– $
– `
– \$
– \’
– \”
-\\
反斜杠任何直接跟在反斜杠后的字符会失去它们特殊的意义
反引号所有在这些引号之间的特殊字符会被当做命令而被执行

单引号

考虑包含许多特殊的 Shell 字符的 echo 命令:

    echo <-$1500.**>; (update?) [y|n]

在每个特殊字符前加反斜杠会显得异常繁琐,并且不容易阅读:

    echo \<-\$1500.\*\*\>\; \(update\?\) \[y\|n\]

有一个简单的方法来引用一大组字符。将一个单引号(’)放在字符串的开头和结尾:

    echo '<-$1500.**>; (update?) [y|n]'

单引号内的任何字符被引用正如每个字符前均加上一个反斜杠。所以,现在这个 echo 命令将正确地显示。

如果要输出的一个字符串内出现一个单引号,你不应该把整个字符串置于单引号内,相反你应该在单引号前使用反斜杠(\)如下:

    echo 'It\'s Shell Programming'

双引号

尝试执行以下 Shell 脚本。这个 Shell 脚本使用了单引号:

    VAR=ZARA
    echo '$VAR owes <-$1500.**>; [ as of (`date +%m/%d`) ]'

这将输出以下结果:

    $VAR owes <-$1500.**>; [ as of (`date +%m/%d`) ]

所以这不是你想显示的内容。很明显,单引号防止变量替换。如果想替换的变量值和如预期那样使引号起作用,那么就需要把命令放置在双引号内,如下:

    VAR=ZARA
    echo "$VAR owes <-\$1500.**>; [ as of (`date +%m/%d`) ]"

这将产生以下结果:

    ZARA owes <-$1500.**>; [ as of (07/02) ]

除以下字符外,双引号使所有字符的失去特殊含义:

  • $ 参数替代。
  • 用于命令替换的反引号。
  • \$ 使美元标志在字面上显示。
  • \` 使反引号在字面上显示。
  • \” 启用嵌入式双引号。
  • \ 启用嵌入式反斜杠。
  • 所有其他\字符在字面上显示(而不是特殊意义)。

单引号内的任何字符被引用正如每个字符前均加上一个反斜杠。所以,现在这个 echo 命令将正确地显示。

如果要输出的字符串内出现一个单引号,你不应该把整个字符串置于单引号内,相反你应该在单引号前使用反斜杠(\)如下:

    echo 'It\'s Shell Programming'

反引号

置于反引号之间的任何 Shell 命令将执行命令

语法

下面是一个简单的语法,把任何 Shell 命令置于反引号之间:

例子

    var=`command`

例子

下面将执行 date 命令,产生的结果将被存储在 DATA 变量中。

    DATE=`date`

    echo "Current Date: $DATE"

这将输出以下结果:

    Current Date: Thu Jul  2 05:28:45 MST 2009

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/212700.html<

(0)
管理的头像管理
上一篇2025-04-10 23:54
下一篇 2025-04-10 23:56

相关推荐

  • 站群服务器和普通服务器到底哪个更适合GEO,怎么选?

    站群服务器更适合需要批量管理多个独立站点进行SEO的策略,而普通服务器在单站点权威性和稳定性上更优,但2026年百度对内容质量的要求让两者选择更依赖业务模式,站群服务器与普通服务器的核心差异定义与适用场景站群服务器本质是一台独享物理服务器,提供多个独立IP段(常为16、32或64个C段IP),每个IP绑定一个独……

    2026-07-28
    0
  • 物理服务器和云服务器做站群到底选哪个,哪个更稳定?

    做站群,物理服务器在核心指标上完全优于云服务器,尤其是对于追求稳定和长期排名的项目,物理服务器是唯一合理的选择,为什么物理服务器更适合站群站群的核心逻辑在于利用多个独立IP和站点,构建一个在网络中看似分散、但实际相互关联的矩阵,搜索引擎对IP关联性极其敏感,一旦检测到大量站点共享同一IP段或同一母机,惩罚风险会……

    2026-07-28
    0
  • 国内高防服务器哪家防御真实靠谱,怎么选?

    国内高防服务器哪家防御真实靠谱?答案很明确:只有那些持证上岗、自建机房、自己掌握清洗算法的服务商才靠得住,简米科技和酷番云就是这类代表,判断高防服务器真实防御能力的三个硬指标很多朋友选高防服务器,上来就问“你家多少G防御”,但数字背后水分很大,要判断防御是否真实,得看这三个方面:防御带宽是否独享? 有些服务商宣……

    2026-07-28
    0
  • 裸金属服务器和物理服务器有什么区别?,怎么选?

    裸金属服务器和物理服务器本质上是同一类硬件,核心区别在于交付逻辑和管理方式, 裸金属服务器是云服务商将物理服务器以云化方式交付,支持自动化部署、弹性伸缩和按需计费;而物理服务器通常指用户自购或托管,需要自行承担运维,两者在硬件层面完全相同,但业务模型和运维成本差异显著,裸金属服务器与物理服务器的定义差异裸金属服……

    2026-07-28
    0
  • 做GEO站群选哪家服务器服务商靠谱,怎么选?

    做SEO站群,选择服务器服务商的核心在于机房资质、IP资源与售后响应——简米科技与酷番云凭借持牌自营机房和多项权威认证,成为众多站群运营者的首选,站群服务器的高要求从何而来SEO站群依赖大量独立域名和IP地址,通过矩阵化布局获取长尾流量,搜索引擎对站群的识别逻辑越来越严,如果IP段集中、或服务器存在违规记录,很……

    2026-07-28
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注