Linux系统Shell脚本语言之无效符号的解决办法

Linux系统Shell脚本语言之无效符号的解决办法摘要 今天更新应用系统的补丁时出现了问题 供应商将补丁文件的压缩包上传到服务器的对应目录 在执行解压过程中 出现文件名称包含无效符号的错误 导致文件无法解压成功

欢迎大家来到IT世界,在知识的湖畔探索吧!

摘要:今天更新应用系统的补丁时出现了问题,供应商将补丁文件的压缩包上传到服务器的对应目录,在执行解压过程中,出现文件名称包含无效符号的错误,导致文件无法解压成功。经查发现是压缩包名称含有中文符号的括号(1),在解压的时候无法识别该符号,后来将该压缩包名称用‘’(单引号)括起来,并重名后再成功解压。

本文主要将上述过程记录下来,重点是介绍脚本语言符号的使用方法。详细内容请参考下文。

一、登录Linux系统

说明:通过SSH登录系统

Linux系统Shell脚本语言之无效符号的解决办法



欢迎大家来到IT世界,在知识的湖畔探索吧!

二、Shell脚本符号

1、通配符

说明:通配符是出现在shell命令的“参数”里。当shell在“参数”中遇到了通配符时,shell会将其当作路径或文件名去在磁盘上搜寻可能的匹配,若符合要求的匹配存在,则进行代换(路径扩展);否则就将该通配符作为一个普通字符传递给“命令”,然后再由命令进行处理。总之,通配符实际上就是一种shell实现的路径扩展功能。在通配符被处理后, shell会先完成该命令的重组,然后再继续处理重组后的命令,直至执行该命令。

字符

含义

实例

*

匹配 0 或多个字符

a*b a与b之间可以有任意长度的任意字符, 也可以一个也没有, 如aabcdb, axyzb, a01234b, ab。

?

匹配任意一个字符

a?b a与b之间必须也只能有一个字符, 可以是任意字符, 如aab, acb, a1b, a2b。

[list]

匹配 list 中的任意单一字符

a[xyz]b a与b之间必须也只能有一个字符, 但只能是 x 或 y 或 z, 如: axb, ayb, azb。

[!list]

匹配 除list 中的任意单一字符

a[!0-9]b a与b之间必须也只能有一个字符, 但不能是阿拉伯数字, 如axb, aab, a-b。

[c1-c2]

匹配 c1-c2 中的任意单一字符 如:[0-9] [a-z]

a[0-9]b 0与9之间必须也只能有一个字符 如a0b, a1b… a9b。

{string1,string2,…}

匹配 sring1 或 string2 (或更多)其一字符串

a{abc,xyz,123}b a与b之间只能是abc或xyz或123这三个字符串之一。

备注:通配符看起来有点象正则表达式语句,但是它与正则表达式不同的,不能相互混淆。把通配符理解为shell 特殊代号字符就可。而且涉及的只有*,?,[],{} 这几种。

2、元符号

说明:shell除了有通配符之外,还有一系列自己的其他特殊字符,由shell负责预先先解析后,将处理结果传给命令行。

字符

说明

IFS

由 <space> 或 <tab> 或 <enter> 三者之一组成(我们常用 space )。

CR

由 <enter> 产生。

=

设定变量。

$

作变量或运算替换。

>

重定向 导出 stdout。 *

<

重定向 导入 stdin。 *

|

命令管线。 *

&

重导向 file descriptor ,或将命令置于背境执行。 *

( )

将其内的命令置于 nested subshell 执行,或用于运算或命令替换。 *

{ }

将其内的命令置于 non-named function 中执行,或用在变量替换的界定范围。

;

在前一个命令结束时,而忽略其返回值,继续执行下一个命令。 *

&&

在前一个命令结束时,若返回值为 true,继续执行下一个命令。 *

||

在前一个命令结束时,若返回值为 false,继续执行下一个命令。 *

!

执行 history 列表中的命令。*

备注:shell 元字符,基本是作用在命令上面,用作多命令分割(或者参数分割)。

3、转义符

说明:有时候想让通配符,或者元字符,变成普通字符,不需要使用它原本的含义。那么就需要用到转义符了。

shell提供转义符有三种。

字符

说明

‘’(单引号)

又叫硬转义,其内部所有的shell 元字符、通配符都会被关掉。注意,硬转义中不允许出现’(单引号)。

“”(双引号)

又叫软转义,其内部只允许出现特定的shell 元字符:$用于参数代换 `用于命令代替。

\(反斜杠)

又叫转义,去除其后紧跟的元字符或通配符的特殊意义。

三、脚本无效符号的解决过程

1、出现问题

执行指令# ls -al

Linux系统Shell脚本语言之无效符号的解决办法

问题:压缩包出现(1)符号,Linux无法正常识别。

执行指令# unzip 压缩包名称 进行解压

出现错误提示

Linux系统Shell脚本语言之无效符号的解决办法

无法正常压缩

执行指令# mv 原压缩包名称 新压缩包名称 进行改名

一样提示错误

Linux系统Shell脚本语言之无效符号的解决办法

无法进行文件改名

2、使用转义符解决问题

执行指令# mv ‘*
_security__v9.0_v10.58.2 (1)(1).zip’ *
_security__v9.0_v10.58.2_1.zip

Linux系统Shell脚本语言之无效符号的解决办法

备注:执行改名指令的时候,将压缩包名称加上转义符单引号,改名成功。然后解压。

或者执行指令# cp ‘*
_security__v9.0_v10.58.2 (1)(1).zip’ *
_security__v9.0_v10.58.2_2.zip

Linux系统Shell脚本语言之无效符号的解决办法

备注:执行复制指令的时候,将压缩包名称加上转义符单引号,复制成功。然后也可以解压。

Linux系统Shell脚本语言之无效符号的解决办法

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/130721.html

(0)
上一篇 19分钟前
下一篇 2025年 1月 28日 上午8:23

相关推荐

发表回复

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

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信