Linux外壳程序编程 shell编程 引号详解

shell是命令语言、命令解释程序及程序设计语言的统称;

shell是一个命令语言解释器,它拥有自己内建的shell命令;

Shell(Bash)单引号、双引号和反引号用法详解;

尽量使用 $(命令) 的方式来引用命令的输出,而不要使用反引号。


前言

1.shell变量的定义及其使用

2.位置参数和环境变量

3.shell中的特殊字符

目录

前言

一、SHELL变量

二、SHELL中的特殊字符

(1)通配符

1. * 星号

2. ?问号

3. !叹号

(2)引号

1.双引号

2.单引号-所见即所得

3.倒/反引号和$作用相同

4.反斜线

三、条件测试

1.字符串比较

2.数字比较

3.文件操作符

四、测试语句

五、执行shell程序的方法


一、SHELL变量

shell有两三种变量:内部变量、环境变量和临时变量;在shell脚本中临时变量又分为两类:用户定义的变量和位置参数;返回值为0代表为真,其他非0值均为假。

常用的内部变量:
#:传给shell程序位置参数的个数;

?:存储上一个执行命令的返回值,返0 存储shell程序的名称;

* :存储shell程序的所有参数

二、SHELL中的特殊字符

(1)通配符

通常的通配符有三种:

1. * 星号

它匹配任意字符的0次或多次出现。但注意,文件名前面的圆点(.)和路径名中的斜线(/)必须显示匹配。

2. ?问号

它匹配任意一个字符。应该注意:字符 * 和 ?在一对方括号外面是通配符,若出现在其内部,它们就失去通配符的能力了。

3. !叹号

若它紧跟在一对方括号的左方括号“ [ ”之后,则表示不在一对方括号中所列出的字符。

(2)引号

 在SHELL中引号分为三种:单引号、双引号、和倒引号。被单引号括起的字符串(包括特殊字在内),这些字符串就会失去特殊的意义而只作为普通字符解释;双引号括起来的字符串除 $ 、’、和”仍保留特殊的功能,其余字符则被视为普通字符;反引号括起的字符串被shell解释为命令行,在执行时shell将其解释后直接输出不包括反引号在内的结果。

单引号和双引号用于变量值出现空格时,比如name=yue ying,这样执行就会出现问题,而必须用括号引起来。如name="yue ying"

不过,引号有单引号和双引号之分,二者的主要区别在于,被单引号括起来的字符都是普通字符,就算特殊字符也不再有特殊含义;而被双引号括起来的字符中,"$"、"\"和反引号是拥有特殊含义的,"$"代表引用变量的值,而反引号代表引用命令。

1.双引号

由双引号括起来的字符,除$、倒引号和反斜线(\)仍保留其功能外,其余字符通常作为普通字符对待。双引号作用与单引号类似,区别在于单引号会忽略其内的特殊字符(单引号直接引用字符串),而双引号会对其内的“$”"、“`”这三种特殊字符先进行解释,并将以解释后的含义替换字符本身的含义后输出。

2.单引号-所见即所得

由单引号括起来的字符都作为普通字符出现。在shell中定义字符串时就会涉及到空格或引用字符串原意的问题,在不使用引号而直接定义有空格的字符串时会出现定义失败,如果要直接引用字符串中特殊字符的原型时,单引号都可以解决这个问题。
单引号括起来的字符串,它可以将其中的内容全部解释为普通的字符串,并将解释后的字符串输出。如,使用单引号来定义有空格的字符串,并将定义的字符串引用。如果定义的字符串中含有空格而不使用引号时,就会出现定义失败的情况。

在定义字符串失败的情况下引用字符串时就出现空值,这反过来也说明字符串定义失败。单引号还有另一个作用是阻止在其内的特殊字符被解释,也就是说在单引号内定义的是字符串,都直接把定义的全部字符串一成不变的输出。

3.倒/反引号和$作用相同

反引号的作用和用法与在双引号内的变量引用相似,在shell中会将反引号内的字符视为命令来执行,并将执行后的结果输出。如果在反引号内的字符不能被识别,系统就无法执行并输出空值或错误的提示信息。

反引号可用在单引号和双引号内,不同的是在单引号内使用时会忽略对反引号内容的解释(就是不执行反引号内的字符或字符串),而在双引号中时会对反引号内的字符先进行解释,并将结果输出。

echo '`date`'echo "`date`"
~   

4.反斜线

转义字符,若想在字符串中使用反斜线本身,则必须采用(\\)的形式,其中第一个反斜线作为转义字符,而把第二个反斜线变为普通字符。

三、条件测试

1.字符串比较

=     比较两个字符串是否相等
!=    比较两个字符串是否不相等
-n    判断字符长度是否大于零
-z    判断字符长度是否等于零

2.数字比较

-eq     比较两个数是否相等
-ge     比较一个数是否大于或是等于另一个数
-le      比较一个数是否小于或是等于另一个数
-ne     比较两个数是否不等
-gt      比较一个数是否大于另一个数
-lt       比较一个数是否小于另一个数

3.文件操作符

-d     确定文件是否为目录
-f      确定文件是否为普通文件
-r      确定是否对文件设置了读许可
-s      确定文件名是否具有大于零的长度
-w     确定文件是否设置了写许可
-x      确定文件是否设置了执行许可

四、测试语句

有两种常用形式:一种是用test命令,如上所示。另一种是用一对方括号将测试条件括起来。两种形式完全等价。

eg:测试位置参数$1是否是已存在的普通文件,可写成:test -f " $1",也完全可写成:[ -f $ l ]

在格式上应注意,如果在test语句中使用shell变量,为表示完整、避免造成歧异起见最好用双引号将变量括起来。利用一对方括号表示条件测试时,在左方括号[之后、右方括号]之前各应有空格。 

五、执行shell程序的方法

方法一 : shell程序不在当前目录:加执行权后,程序完整路径引导。

方法二:  shell程序在当前目录,可用点返斜线引导 或 sh shell程序名;
例如:./aa.sh  或 sh  aa.sh

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/38159.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【OS命令注入】常见OS命令执行函数以及OS命令注入利用实例以及靶场实验—基于DVWA靶场

目录 1 OS命令注入概述2 常见OS命令注入函数及例子2.1 system()函数2.2 exec()函数2.3 shell_exec()函数2.4 passthru()函数2.5 popen()函数2.6 反引号结构 3 OS命令注入漏洞的利用3.1 查看系统文件3.2 显示当前路径3.3 写文件 4 OS命令注入漏洞的防御5 OS命令注入漏洞靶场实验…

Linux —— tftp 使用

提示:tftp 命令在 uBoot 系统和 Linux 系统下的使用是不一样的 前言 在 Linux 移植过程或裸机开发中,经常要使用到 tftp 命令,本文围绕该命令相关的网络配置及使用做出记录,本文中,开发电脑命名为上位机,新…

linux 之TFTP的使用

简介 TFTP是用来下载远程文件的最简单网络协议,它其于UDP协议而实现。嵌入式linux的tftp开发环境包括两个方面:一是linux服务器端的tftp-server支持,二是嵌入式目标系统的tftp-client支持。因为u-boot本身内置支持tftp-client,所以…

嵌入式linux与windows之间的tftp文件传输(保姆级)

目录 前言一、为什么要文件传输二、利用共享文件夹(简要流程)三、tftp传输与环境搭建四、传输前的准备工作五、测试准备工作是否完成六、传输文件6.1、windows中tftp32的配置6.2、嵌入式Linux(板子)中获取或发送文件6.2.1、tftp命令用法 前言 在我们接触嵌入式Linux之前&#…

用于医疗领域的聊天机器人ChatDoctor

ChatGPT系列文章 文章目录 ChatGPT系列文章ChatDoctor数据集模型训练参考资料 ChatDoctor ChatDoctor: A Medical Chat Model Fine-tuned on LLaMA Model using Medical Domain Knowledge 论文地址:https://arxiv.org/pdf/2303.14070.pdf 在通用领域中的大型语言…

2021年中国互联网行业投融资运行现状及未来发展趋势分析[图]

互联网指的是网络与网络之间所串连成的庞大网络,这些网络以一组通用的协议相连,形成逻辑上的单一巨大国际网络。 一、全球互联网行业投融资运行现状 国际环境更趋复杂严峻,世界经济复苏放缓,通胀压力上升与疫情蔓延交织。2021年…

2021年中国企业风险投资发展现状及未来发展趋势分析[图]

企业风险投资是指有明确主营业务的非金融企业在其内部和外部所进行的风险投资活动。企业从事风险投资的形式主要有两种:一种是把用于风险投资的资金委托给专业的风险投资公司进行管理,由其成立的投资基金根据委托方的战略需要选择投资目标;另…

最强对话模型 ChatGPT 向 Google 搜索发起挑战

GPT-3 发布的两年后,我们没等来它的亲弟弟 GPT-4,而是在今天亲眼见证了 OpenAI 带来了一种全新的 AI 聊天机器人——ChatGPT,也可以称之为是 GPT-3 家族里面的亲戚,它不仅可以解释代码、编写情景喜剧脚本,也可以为用户…

Google 新一代音乐识别

文 / Google AI 苏黎世办公室 James Lyon 2017 年,我们发布了具有闻曲知音功能的 Pixel 2,就是利用深度神经网络为移动设备带来低功耗、始终开启的音乐识别功能。在开发 “闻曲知音” 时,我们的目标是打造一个小巧高效的音乐识别器&#xff0…

谷歌AudioLM :通过歌曲片段生成后续的音乐

AudioLM 是 Google 的新模型,能够生成与提示风格相同的音乐。该模型还能够生成复杂的声音,例如钢琴音乐或人的对话。结果是它似乎与原版没有区别,这是十分让人惊讶的。 为什么生成音乐如此困难? 创作音乐并不是一件容易的事。生成音频信号&…

“程序员交友网站” SO 突然裁员 10%,网友:ChatGPT 出来后就不咋用了

在ChatGPT影响下,知名开发者问答社区Stack Overflow撑不住要裁员了! 随着用户大规模转战ChatGPT,Stack Overflow访问量大幅骤降,且盈利情况不容乐观。 CEO Prashanth Chandrasekar在公开信中坦言:正处于困难时期。 具…

巴比特 | 元宇宙每日必读:浙江发布2023年元宇宙产业发展工作要点,6月底前组建元宇宙产业联盟,年底打造20家“专精特新”企业...

摘要:据浙江省发改委官网 4 月 24 日消息,浙江省发改委等 5 部门近日联合印发《浙江省元宇宙产业发展 2023 年工作要点》。《工作要点》制定了十六项主要任务,并提出在2023 年 4 月底前建立元宇宙部门工作协同机制;6 月底前组建元…

免费版GPT-4!美国AI初创公司推出Forefront Chat,火到官网崩溃

免费版 GPT-4 到底香不香? AI初创企业正式推出Forefront Chat 近日,Forefront AI 正式推出 Forefront Chat,允许用户免费体验 GPT-4 的强大功能。ForeFront AI 是一家总部位于纽约的软件开发公司,联合创始人分别为 Jimmy Grease…

VTK笔记-生成MIP图像-vtkImageSlabReslice类

MIP MIP(Maximum/Minimum Intensity Projection),最大/最小密度投影重建。   MIP可以较真实地反应组织密度差异,使得血管的异常改变、形态、走形强化;但是只适用于外观形态的显示。   在容积扫描数据中对每条径线上…

重温马云英文演讲:最伟大的成功

“机会在哪呢?”每当创业者发出这个疑问,我们就该重温马云的这段英文演讲,让奋斗的热血重新沸腾起来。你有什么。你有年轻的身体,你有奇妙的想法,你有乐观的心态,你有无限的可能性! 演讲全文&am…

马云退隐前,在年会上说了最重要的三件事

作者:黄小斜 今天是9月10号教师节,也是马老师卸任阿里巴巴董事长的日子,同时也是阿里巴巴召开20周年年会的日子。有幸抽中了门票,在现场见证这具有历史意义的一幕,马老师在中场时给我们带来了一段演讲,也是…

阿里巴巴CTO独家自述:CTO就是要给CEO扫清障碍和风险

CTO可能不是思想家,但一定是行动派。 本文来自《云栖战略参考》第二期,过程中鲁肃非常坦率地探讨了一位合格CTO应该具备的素质,以及他自己一路摔打成长的心路历程。 一 我的经历 我的经历很简单,2004年之前一直在学校读书&#x…

马云现身西班牙度假 半年多来首次在境外露面

这半年里,马云公开露面的次数不到三次,就连前段时间的世界互联网大会也不见他的身影。 极少数出现在公众视野的马老师似乎在努力低调,但是他的一举一动仍然受人关注。 西班牙多家媒体10月19日报道,马云上周六飞抵西班牙, 在伊维…

【历史上的今天】8 月 22 日:改变世界的程序员们;网络直播的鼻祖;何小鹏离开阿里巴巴

整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来。 今天 2022 年 8 月 22 日。历史上的今天,Masatoshi Shima 出生,他和 英特尔(Intel) 合作设计的芯片让第一个微处理器 Intel 400…

马来西亚热情拥抱阿里巴巴 马云倡议的eWTP首次落地海外

摘要:3月22日,马来西亚总理纳吉布与阿里巴巴集团董事局主席马云一同出现在吉隆坡一场盛大启动仪式上,他们将共同见证马云的eWTP理念落地马来西亚。 3月22日,在邀请阿里巴巴集团董事局主席马云、阿里巴巴集团CEO张勇、蚂蚁金服集团…