分享

Linux系统Shell脚本语言之反引号、单引号以及双引号的区别

 江海博览 2023-11-07 发布于浙江

摘要:Shell是文本互动程序,相当一个命令行翻译器。能将在计算机上的操作命令,翻译为计算机可识别的二进制命令,传递给内核,以便调用计算机硬件执行相关的操作。同时,计算机执行完命令后,再通过Shell翻译成自然语言,呈现在用户面前。

昨天编写了一个FTP备份数据文件的脚本,昨晚执行的时候出现问题,竟是无法找到对应的文件,导致FTP备份失败。于是便抽空检查一下昨天编写的脚本,发现是由于$引用变量的时候出现问题,经过测试,才将问题解决。现在将结果过程记录下来,以供参考。

本文主要介绍Shell脚本语言三重容易搞混的符号(反引号、单引号和双引号)的使用方法,并重点介绍其中的差异之处。详细内容请参考下文。

一、登录系统LINUX

1、登陆LINUX系统

Linux系统Shell脚本语言之反引号、单引号以及双引号的区别

2、查看默认的SHELL

Linux系统Shell脚本语言之反引号、单引号以及双引号的区别

二、SHELL三种易混的引号

1、反引号

说明:反引号的功能是命令替换,在反引号(``)中的内容通常是命令行,程序会优先执行反引号中的内容,并使用运行结果替换掉反引号处的内容。如果需要调用命令的输出,或把命令的输出赋予变量,则命令必须使用反引号包含,这条命令才会执行,反引号的作用和 $(命令) 是一样的,但是反引号非常容易和单引号搞混,所以推荐大家使用 $(命令) 的方式引用命令的输出。

执行指令# echo `变量`

Linux系统Shell脚本语言之反引号、单引号以及双引号的区别

备注:反引号的命令会正常执行。

(1)、如果命令不用反引号包含,那么命令不会执行,而是直接输出。

Linux系统Shell脚本语言之反引号、单引号以及双引号的区别

(2)、只有用反引号包含命令,这条命令才会执行。

Linux系统Shell脚本语言之反引号、单引号以及双引号的区别

(3)、也可以使用$(命令)的方式

Linux系统Shell脚本语言之反引号、单引号以及双引号的区别

(4)、另一个例子,先定义一个变量sub,然后执行输出echo `$sub`,这时会将变量转换为变量的的结果并显示出来,但是会提示这个结果不是命令,因此提示“未找到命令… …”

Linux系统Shell脚本语言之反引号、单引号以及双引号的区别

2、单引号

说明:在shell脚本中,单引号内不会解析任何变量、元字符、通配符、转义符,只能被原样输出。可以这么认为,被单引号括起来的字符都是普通字符,就算特殊字符也不再有特殊含义。

Linux系统Shell脚本语言之反引号、单引号以及双引号的区别

又比如,使用echo输入日期变量

执行指令# echo 'date’

Linux系统Shell脚本语言之反引号、单引号以及双引号的区别

备注:这条语句中的date命令不会执行,`date`会被当成普通字符输出。

3、双引号

说明:双引号会保护特殊元字符和通配符不被shell解析,但是允许变量和命令的解析,以及转义符的解析。

Linux系统Shell脚本语言之反引号、单引号以及双引号的区别

4、综合举例

说明:编写shell脚本,可以看出反引号、单引号和双引号的使用区别。

Linux系统Shell脚本语言之反引号、单引号以及双引号的区别

执行指令# sh symbol.sh

Linux系统Shell脚本语言之反引号、单引号以及双引号的区别

或者脚本内容如下:

Linux系统Shell脚本语言之反引号、单引号以及双引号的区别

执行指令# sh symbol.sh

Linux系统Shell脚本语言之反引号、单引号以及双引号的区别

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多