百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Linux系统Shell编程之注释、变量、数组和字符串

ahcoder 2025-01-13 10:27 34 浏览

摘要:Linux Shell 其实是用 C 语言编写出来的一个程序。Shell 不光是一种命令语言,而且还是一种程序设计语言。Shell 说的就是一种应用程序,这个应用程序能给出一个界面,用户依靠这个界面就能获取操作系统内核的服务。Shell 属于一个命令行解释器,它的作用在于解释并执行用户的命令,用户输入一条命令,Shell 就会马上解释执行这一条。当然啦,也能够把一套输入的逻辑整理成一个脚本文件,这样用起来就方便多了,能重复使用。

这篇文章重点讲的是 Linux Shell 编程里注释、变量、数组以及字符串的使用办法,详细的内容您可以参考下文。

一、Shell脚本结构

1.shell脚本程序

执行指令# vim hellojason.sh

#!/bin/bash

# 注释:说明脚本的作用

echo "Hello,Jason!"

备注:上述脚本中#!/bin/bash指明这个脚本使用bash解释器运行。而echo "Hello,Jason!"是一个简单的命令,用于输出文本

2.运行shell脚本程序

说明:保存上述脚本内容后,给该脚本文件授予可执行的文件,然后执行指令# sh hellojason.sh运行该脚本文件。

二、Shell注释

说明:Shell编程中,为了方便脚本程序的理解,经常会使用文件进行注释。Shell脚本程序的注释分为单行注释和多行注释,一般使用#号进行单行注释,而多行注释倾向于使用:号。

1.单行注释符号#

说明:一般情况下,以 # 开头的行就是注释,会被解释器忽略。

如上述脚本程序中的内容:

就是单行注释。

2.多行注释符号:

说明:一般情况下,可以使用:<<EOF … … EOF进行多行注释。

:<<EOF

第一行注释

第二行注释

第三行注释

EOF

备注:上述注释符号:<<后面的EOF可以换成其它任意字符串。比如

:<<!

第一行注释

第二行注释

第三行注释

!

三、Shell变量

说明:在 Shell 编程中,变量是用来存储数据值的名称。一般格式如下

NAME1=jason # 可以不加引号定义字符串

NAME2='jason' # 单引号定义字符串

NAME3="jason" # 双引号定义字符串

1.定义变量

说明:分别使用字符串、加单引号的字符串和双引号的字符串定义变量,输出的结果一样。如下图

2.使用变量

说明:使用变量的时候需要加上$符号,或者${ }符号。花括号是可选的,主要为了帮助解释器识别变量边界。

比如上述可以这么使用已经定义的变量,如下

3.变量的变更及删除

说明:在把变量定义好了以后,能够用 readonly 命令去改变变量的属性,把变量变成只读变量。同时呢,如果已经定义好的变量用不着了,那就可以用命令 unset 把变量给删掉,变量一旦删掉就不能再用啦。当然,unset 命令是没办法删掉已经变成只读的变量的。

比如

四、Shell数组

说明:在 Shell 编程中,数组是用来存储多个数据值的名称。一般格式如下

1.定义数组

定义:在Shell编程中,数组就是一系列元素的集合,一个数组内可以存放多个元素。

2.读取数组

读取数组元素值的一般格式是:

${数组名[下标]}

比如

valuen=${array_name[n]}

如下

备注:可以使用${array_name[@]}或者${array_name[*]}获取数组的所有元素。

五、Shell字符串

说明:在 Shell 编程中,字符串是最常用最有用的数据类型,字符串可以用单引号,可以用双引号,也可以不用引号。

1.通过${字符串名}直接读取字符

2. 通过${#字符串名}获取字符串长度

3. 通过${字符串名:索引值:索引值}提取子字符串

备注:第一个字符的索引值为0

相关推荐

KaOS 2025.05版本发布:全面拥抱Qt6,彻底告别Qt5

KaOSLinux2025.05版本重磅发布:全面拥抱Qt6,开启KDE生态新篇章继2025.03版本发布两个月后,专注于KDE桌面环境、采用XFS文件系统的滚动发行版Li...

基于FIMC接口的CMOS摄像头驱动分析与设计

摘要:目前的嵌入式系统中,USB摄像头使用比较普遍,但其应用会受到传输速度的限制。本文采用一款高速CMOS摄像头,其驱动利用S3C6410内置的FIMC接口技术,采用DMA和ping-pong缓冲...

没错是微软 推出基于Linux的交换机系统

2015-09-2205:59:59作者:郑伟你没看错,为了提升自身Azure云数据中心内网络设备的兼容性及开放性,微软也开始推出基于Linux的网络交换机系统了。这个被称为AzureCloud...

Linus Torvalds 宣布首个 Linux 内核 6.16 候选版本

Linux内核负责人兼创始人LinusTorvalds宣布关闭合并窗口,该窗口用于将主要新功能添加到内核中,并开始发布Linux6.16候选版本,从候选版本1(Linux6.16-r...

Linux内核漏洞将影响Haswell架构服务器

在infoq网站上,GilTene最近报告一个十分重要,但并不为人知Linux内核补丁,特别对采用Haswell架构的Linux系统用户和管理员应该特别关注。报告提醒RedHat发行版的用户(包括...

关于Linux性能调优中网络I/O的一些笔记

写在前面和小伙伴分享一些Linux网络优化的笔记,内容很浅,可以用作入门博文内容结合《Linux性能优化》读书笔记整理涉及内容包括常用的优化工具(mii-tool,ethtool,ifconfig,i...

国产操作系统- Veket Linux(国产操作系统之光银河麒麟阅读理解)

VeketLinux是一个随身的可装在U盘的Linux操作系统。主要面向桌面用户。它的设计重点是提供简单易用且稳定的操作系统,同时保持更新和开发。它具有强大的功能集和广泛的用户基础,可满足...

AlmaLinux 9.6发布:升级工具、初步支持IBM Power虚拟化技术

IT之家5月21日消息,科技媒体linuxiac昨日(5月20日)发布博文,报道称代号为SageMargay的AlmaLinux9.6发行版已上线,距上一版本9.5发...

跟老韩学Linux运维架构师系列,vim与view的基本使用

下面是vim和view的10个实例:用vim打开一个新文件:vimnewfile.txt这个命令将会在vim编辑器中打开一个新文件。在vim中移动光标:使用方向键或h、j、k、l键来移动光标。在v...

malloc底层原理剖析——ptmalloc内存池

malloc底层为什么是内存池malloc大家都用过,其是库函数。我们都知道库函数在不同的操作系统中其实执行的是系统调用,那么malloc在Linux上执行的是哪个系统调用呢?brk()和mmap()...

Zen 6架构首秀Linux,AMD加速下一代处理器布局

IT之家5月15日消息,科技媒体Phoronix昨日(5月14日)发布博文,报道称AMD已经开始为下一代“Zen6”处理器做准备,已为该构架向Linux内核提交了首个补丁,...

为何越来越多企业转向安卓/Linux工业平板电脑?答案在这里

在工业领域,设备的稳定性至关重要,尤其是工业平板电脑,常年运行在高温、粉尘、潮湿等复杂环境下,一旦系统崩溃或者卡顿,可能会影响整个生产流程。那么,为什么越来越多的企业选择安卓/Linux工业平板电脑,...

从3ms到0.8ms:ARM+Linux如何重塑工业控制实时性标杆

在智能制造领域,产线控制系统对实时性的要求越来越高。根据行业调研数据,超过65%的工业现场出现过因系统响应延迟导致的故障停机,平均每次停机造成的直接损失高达2-8万元。传统x86架构搭配Windows...

看Linux如何&quot;挖坑种树&quot;

写在前面,有人看我的Linux文章说技术难度不深,笔者不是不想写深,笔者是觉得Linux难就难在入门,入门之后你就知道如何上网查询你所要要解决的Linux需求。如果你已入门,此文已对你无用,请略过此...

AlmaLinux 9.6 发布,新增功能亮点纷呈!

距离上一版本AlmaLinux9.5发布六个月后,基于5.14内核的AlmaLinux正式宣布其企业级Linux发行版的9.x系列第六个更新——AlmaLinux9.6(Sag...