首页 > 系统相关 >无涯教程-Linux - 引用机制

无涯教程-Linux - 引用机制

时间:2023-11-26 19:32:13浏览次数:50  
标签:字符 教程 Shell 引号 无涯 echo 斜杠 Linux 单引号

在本章中,我们将详细讨论Shell引用机制。我们将从讨论元字符开始。

元字符

Unix Shell提供了各种元字符,这些元字符在任何Shell脚本中使用时都有特殊的含义,并且除非引号引起,否则会导致终止。

如,?匹配单个字符,而在目录中列出文件,而 * 匹配多个字符。这是大多数Shell特殊字符(也称为元字符)的列表-

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

可以在字符前面加上\来引号。

以下示例显示了如何打印 * 或?-

#!/bin/sh

echo Learnfk; welcome

执行后,您将收到以下输出-

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

shell returned 127

现在让我们尝试使用带引号的字符-

#!/bin/sh

echo Learnfk\; welcome

执行后,您将收到以下输出-

Learnfk; welcome

$ 符号是元字符之一,因此必须加引号以避免被shell特殊处理-

#!/bin/sh

echo "I have\$1200"

执行后,您将收到以下输出-

I have $1200

下表列出了四种报价形式-

Sr.No. Quoting & 描述
1

Single quote(单引号)

这些引号之间的所有特殊字符均失去其特殊含义。

2

Double quote(双引号)

这些引号之间的大多数特殊字符会失去其特殊含义-

  • $
  • `
  • \$
  • \'
  • \"
  • \\
3

Backslash(反斜杠)

反斜杠后面的任何字符都将失去其特殊含义。

4

Back quote(反引号)

反引号之间的任何内容都将被视为命令并被执行。

单引号

考虑一个包含许多特殊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 'It\'s Shell Programming'

反引号

将任何Shell命令放在反引号之间将执行该命令。

这是将任何Shell command 放在反引号之间的简单语法-

var=`command`

在下面的示例中,将执行 date 命令,并将产生的输出存储在DATA变量中。

DATE=`date`

echo "Current Date: $DATE"

执行后,您将收到以下输出-

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

参考链接

https://www.learnfk.com/linux/linux-quoting-mechanisms.html

标签:字符,教程,Shell,引号,无涯,echo,斜杠,Linux,单引号
From: https://blog.51cto.com/u_14033984/8571897

相关文章

  • 初始Linux
    1.1云计算简介    当一件产品必不可少,而价格又特别高时,人们往往会寻找它的替代品。一旦廉价替代品的性能与原产品的性能相当,人们就会放弃对原产品的使用。云计算最初就是为了应对互联网行业高速发展所带来的网络、服务器、存储、应用软件及服务的昂贵价格而出现的“替代品......
  • Linux文件权限
    1基本权限UGOU:owner,属主G:group,属组O:other,其他用户用户对文件的权限还取决于文件的属性,即文件赋予角色什么权限。结合两者才能得知一个用户对于一个文件的权限。2文件属性使用ll即可查看文件属性第一个字符为文件类型,在Linux中,文件有如下几种类型:d:文件夹-:普通文件l:软......
  • Linux_sqlcmd或者是Cloudquery连接SQLSERVER2012的问题解决
    Linux_sqlcmd或者是Cloudquery连接SQLSERVER2012的问题解决背景最近想使用shell脚本给SQLServer数据库插入数据,但是发现了报错同时进行CLoudquery连接SQLServer数据库时也出现了异常.作为笔记记录一下问题和解决方法sqlcmd的问题现象sqlcmd的提示信息第一:安装sudo......
  • Linux学习随笔——I/O重定向
    绝大多数进程中有0、1、2这三个文件描述符:0:标准输入,可以理解为键盘录入;1:标准输出,输出到终端;2:标准错误,输出到终端;3及以上为常规文件的描述符;例如:date命令在默认的情况下将输出结果显示在终端,此时文件描述符为1,现在改变输出的方向,从终端改为date.txt文件,这个行为叫做重定向:......
  • 通过 docker-compose 快速部署 Rancher 保姆级教程
    目录一、概述二、开始编排部署Rancher1)部署docker2)部署docker-compose3)创建网络4)构建镜像5)编排docker-compose.yaml部署6)接入K8s集群1)部署k8s集群测试(已有可忽略)2)k8s上执行命令接入集群一、概述Rancher是一个开源的容器管理平台,它为企业提供了一个简化容器化应用部署......
  • 无涯教程-Linux - 替换语句
    当Shell遇到包含一个或多个特殊字符的表达式时,它将执行替换语句。在此,变量的打印值由其值代替。同时,"\n"换行-#!/bin/sha=10echo-e"Learnfk.comofageis$a\n"您将收到以下输出。在这里,-e选项可以解释反斜杠转义符。Learnfk.comofageis10以下是没有-e选项的......
  • Linux LVM磁盘
    第八章LVM磁盘LVM概述LVM解释在我们的生产工作中,有时候会出现这种情况,我们规划主机的时候只给了/home50GB,等到用户众多之后,这个文件系统不够大,此时怎么办?我们可以加一块新硬盘,然后重新分区并格式化,将/home的数据完整地复制过来,然后将原本的分区卸载重新挂载新分区,是可以解决......
  • 【Linux】基本指令(初始Linux)
    提示:寡人是用的XShell来写Linux的首先介绍一下在XShell上的复制粘贴复制:ctrl+insert(有些兄弟可能需要按fn来配合)粘贴:shift+insert写到一半指令发现自己写错了,可以ctrl+c,及时止损。和人生一样(/_\)01.ls指令语法:ls[选项][目录或文件]功能:对于目录,该命令列出该目录下的所有子目录与......
  • linux下如何卸载删除php
    1、首先执行如下命令查找全部php软件包1#rpm-qa|grepphp可以看到如下内容:123456#php-pdo-5.1.6-27.el5_5.3#php-mysql-5.1.6-27.el5_5.3#php-xml-5.1.6-27.el5_5.3#php-cli-5.1.6-27.el5_5.3#php-common-5.1.6-27.el5_5.3#php-gd-5.1.6-27......
  • 理解Linux的I/O重定向与管道
    在Linux系统中,I/O重定向与管道是强大而灵活的工具,它们使得用户能够更有效地处理输入输出流,实现各种复杂的数据处理任务。I/O重定向1.输入重定向(<)Linux允许用户将一个文件的内容作为标准输入,这在处理大量数据或者自动化任务时非常有用。例如:$command<input.txt这将使co......