Linux中的Shell编程

article/2025/10/8 6:28:07

1.Shell的概念

shell是一个命令行解释器,它为客户提供了一个Linux内核发送请求一边运行程序界面系统级程序,用汉语可以通过shell启动、挂起、停止甚至编写一些程序。

shell还是一个功能强大的编程语言,易于编辑,易于调试,灵活性强,shell是结识知识性的脚本语言,在我们shell中直接调用Linux的系统命令操作即可。

2. Shell的分类

(1)Bourne Shell(bshell)

        从1979年在unix系统就开始使用了。

        它的主要文件是:sh,bash,zsh,psh

(2)C Shell(cshell)

        只是一个升级的版本

        它的主要文件是:csh,tcsh

        注意问题:bshell和cshell是不能兼容,它们之间是独立的

        bash和sh是可以互相兼容的

3. Linux中支持的shell

(1)查看Linux中的shell脚本

4. Shell脚本的执行方式

(1)回显的命令:echo

(2)在Linux的家目录下创建sh目录存放脚本语言

(3)在sh目录下写一个.sh类型的shell脚本语言hell.sh

 

(4)执行写好的脚本语言:bash或sh命令

        通过路径的方式:bash或sh

        相对路径执行shell脚本

        绝对路径执行shell脚本

        通过可执行文件的方式

        相对路径的方式

        绝对路径的方式

5. Shell中变量(4种)

(1)用户自定义的变量

只能在当前的shell中使用,常用的调用命令echo $变量名

(2)定义一个简单的变量

(3)变量的叠加方式1

(4)变量的叠加方式2

 

(5)查看变量:set

 

 

(6)变量的删除:unset 变量名

 

(7)环境变量(系统运行时所用到的变量)

特点:a:它不仅在当前的shell中有效,在子shell中都有效

           b:如果把环境变量写道指定的文件中,那么该环境变量在所有的shell中都生效。

举例说明:

        声明一个环境变量:export 变量名=变量值。

        查看环境变量:env

 

 

        删除环境变量:unset 环境变量名称

(8)位置变量

        获取执行脚本文件时传入的参数,将传入的参数保存在位置变量种,以便脚本种可以使用这些变量

(9)预定义变量

$0:脚本的名称

$!:进程种PID号,每一个进程都有一个编号

$$:当前进程的ID号

$#:当前shell的参数个数

$*:整体显示所有的参数

$@:逐个显示所有的参数

$?:判断表示程序退出的代码,返回0代表成功,返回非0代表失败

 

正确退出显示0

错误退出显示非0

 

$#的使用

 

$*的使用

$@的使用

6. Shell中逻辑符号

(1)逻辑与:&&

前面的命令执行成功后才能执行后面的命令

(2)逻辑或:||

前面的一个命令执行失败会执行后面

前面的命令执行成功后面的就短路

(3)无逻辑符号

多个命令顺序执行,命令之间没有任何逻辑关系

7. Shell的算数运算

(1)declare命令:说明变量类型

选项:+:取消变量的类型属性

           -:给变量设定类型属性

           i:将变量声明为整数类型

          x:将变量声明为环境变量

         p:显示指定变量被声明的类型

举例说明:数值运算方法1(推荐)

 

举例说明:数值运算方法2(不推荐)

 

举例说明:数值运算方法3(推荐使用)

 

举例说明:数值运算方法4(推荐使用)

 

8. 内置测试的判断

定义字符串必须加上双引号

 

判断字符串之间是否相等,必须加上双引号

-e 文件名:如果文件存在则为真0

-r 文件名:如果文件存在且可读为真0

-w 文件名:如果文件存在且可写为真0

-x 文件名:如果文件存在且可执行则为真0

-a 文件名:and

-o:文件名:or

补充1:用于数值的比较的选项

-eq:等于

-gt:大于

-lt:小于

-ne:不等于

-ge:大于等于

-le:小于等于

补充2:用于字符串:分为5种比较方式

= 等于

!= 不等于

-z:长度为0则为true

-n:长度不位0则为true

str:字符串不为空则为true

 

补充3:文件的测试或比较

-d:如果是目录则为true

-f:如果是文件则为true

-r:如果是可读则为true

-w:如果是可写则为true

-x:如果是可执行则为true

 

可以使用test测试

 

9. Shell的控制语句

(1)if控制语句

if 条件判断

then 内容

fi

目录不存在就创建该目录

目录存在就显示目录种的文件和目录

 

判断score的等级

(2)for循环控制语句

for [ 循环的条件:循环控制]

do

循环体

done

循环月份:

(3)while循环控制语句

while [循环条件]

do

[循环体]

[循环控制]

done

 

(4)case控制语句

case的另外一种编写方式


http://chatgpt.dhexx.cn/article/rFcmy7SU.shtml

相关文章

Shell编程实验

实验二 Shell编程 文章目录 实验二 Shell编程一、如果当前目录下有文件f1,但是没有f2,解释命令ls f1 f2 2>ef1 1>&2的运行结果。二、使用for循环语句编写一段B-shell程序,完成显示用户注册目录下的a_sub, b_sub子目录下的所有C程序…

Shell编程入门

文章目录 1 Shell编程简介2 Shell脚本的执行方式3 Shell变量3.1 Shell变量介绍3.2 定义变量的规则3.3 将命令的返回值赋给变量(重点) 4 设置环境变量5 位置参数变量6 预定义变量7 运算符8 条件判断8.1 基本介绍8.2 if 判断8.3 case 语句 9 循环语句9.1 f…

Linux Shell编程

Linux Shell编程 一、简述 简单的介绍shell脚本的基本用法。 shell脚本是 由一些按照一定格式组合起来的shell命令 组成。shell脚本不需要编译就可以直接执行,它是边解释边执行的。 二、命令解释器 Linux系统提供多种不同的Shell以供选择。常用的有Bourne Shell&a…

Shell编程入门学习

文章目录 Shell编程Shell脚本的执行方式Shell的变量Shell的变量的介绍shell变量的定义 设置环境变量位置参数变量介绍基本语法 预定义变量基本介绍基本语法 运算符基本语法 条件判断判断语句常用判断条件 流程控制if 判断case语句for循环while循环 read读取控制台输入基本语法 …

shell编程

文章目录 一、shell简介二、shell脚本的执行方式三、shell变量3.1 shell变量介绍3.2 shell变量的定义3.2.1 基本语法3.2.2 定义变量的规则3.2.3 将命令的返回值赋予变量 四、环境变量的设置五、位置参数变量5.1 基本介绍5.2 基本语法 六、预定义变量6.1 基本介绍6.2 基本语法 七…

shell编程入门(一天掌握shell编程)

一、背景 到新公司之后,发现好多地方需要使用shell来编写一些简单的程序来提升自己的工作效率,因此专门B站上查看视频(尚硅谷的视频),在这里学习总结下shell编程。 二、shell概述 shell是一个命令行解释器&#xff…

Linux【实操篇】—— Shell 编程入门、变量、运算符、条件判断、流程控制

目录 一、Shell 编程入门 1. 认识 Shell 2. Shell 脚本的创建与执行 二、Shell 变量 1. 系统变量和自定义变量 2. 变量的基本规则 3. 设置环境变量 4. 位置参数变量 5. 预定义变量 三、运算符 四、条件判断 五、流程控制 1. if 语句 2. case 语句 3. fo…

各大常见OJ与推荐OJ汇总(OJ题量统计)

这么长时间了 收集了不少做题的网站 在这里列一列 可以挑自己各方面都喜欢的主用 并没有什么顺序 大家择优选择 Last-Modified: 2023/3 POJ(北京大学)洛谷CowcoderLibreOJCodeforces(俄罗斯)东北大学秦皇岛分校oj51Nodhihocoder…

华为OD机试(2023A+B)在线OJ模拟

语言支持 CCJavaJavaScript(Node.js-CJS、Node.js-ESM)Python(Python3、PyPy3、Python3-Graphics)Mono C#GoRubyRustSQLHaskellBashJuliaKotlin/JVMFortranPascalPHPVerilog 用例库说明 在线OJ中的题目用例均来自本人构思&#…

在线OJ注意事项

CSDN话题挑战赛第2期 参赛话题:学习笔记 一、OJ概念 online judge,简称OJ,是一个在线的判题系统。 用户可以在线提交多种程序代码(比如:C、C、Java、Python等),系统对源代码进行编译和执行,并通过预先设计…

在线OJ系统

在线OJ系统 项目开始之前需要准备的第三方库项目分析 两大模块在线编译模块整体思路编译模块 题目管理模块数据存储页面显示服务器 项目开始之前 需要准备的第三方库 httplib g版本必须得是4.9以上 ctemplate boost: yum install boost-devel.x86_64 jsoncpp&a…

分享一个OJ平台——浙江工商大学的OJ平台

1.引言 最近是有总喜欢讨论算法题,因为他们在准备考研复试,为什么我不准备呢?这是一个悲伤的故事,刚好自己也有面试遇到只能使用C和C的代码题,他们说这OJ平台相对简单一些,那些刷不来LeetCode可以试试这个&…

算法OJ题(1)

1.删除有序数组中的重复项 原题链接:https://leetcode.cn/problems/remove-duplicates-from-sorted-array/ 思路:使用双指针算法可以使时间复杂度达到O(1). 具体过程:(以画图解释) 代码实现: int remove…

你想知道刷题的秘密吗?一篇博客让你明白什么是OJ题,如何刷OJ题,并深入浅出的带你刷遍顺序表的OJ题(小白必看)

目录 0.前言 1.什么是OJ 1.1 OJ简述 1.2 OJ的分类(尤其接口型OJ,带你剖析得明明白白) 1.3 接口型OJ的输入型参数 2. 剑指 Offer 56 - I. 数组中数字出现的次数 3. 88. 合并两个有序数组 4. 27.移除元素 5. 26. 删除有序数组中的重复…

Online Judge系统(简称OJ)

什么是OJ Online Judge系统(简称OJ)是一个在线的判题系统。用户可以在线提交程序源代码,系统对源代码进行编译和执行,并通过预先设计的测试数据来检验程序源代码的正确性。 一个用户提交的程序在Online Judge系统下执行时将受到比…

OJ的介绍以及使用方法

OJ系统简介 Online Judge系统(简称OJ)是一个在线的判题系统。用户可以在线提交程序多种程序(如C、C) 源代码,系统对源代码进行编译和执行,并通过预先设计的测试数据来检验程序源代码的正确性。 一个用户提…

C++-OJ

题目源自某高校C的OJ 本文字数过多,所有代码,都在这里 将做过的C OJ题目整理合并了一下,总共有一百多道题目,手动合并自然是不可能的 这个时候我们就可以使用shell脚本来取代这种机械化的重复劳动了,由于写成博客需要…

杭电OJ刷题指南(ACM)

除了杭电OJ,还有北大OJ,华科OJ等。 1.首先,打开百度,输入“杭电OJ”进行搜索 2.然后进入杭电OJ官网,进行注册 3.输入注册信息 4.接下来进入详细注册界面,将信息填写完整后点击Submit 5.接下来即可登录…

OJ系统

什么是OJ Online Judge系统(简称OJ)是一个在线的判题系统。用户可以在线提交程序源代码,系统对源代码进行编译和执行,并通过预先设计的测试数据来检验程序源代码的正确性。 一个用户提交的程序在Online Judge系统下执行时将受到比…

最适合编程训练的三大OJ(从易到难)

按照学习的需求来说依次介绍,方便初学者使用: 1.Dotcpp网www.dotcpp.com 优点:全中文OJ,题目分类,有题解 这可能是初学者最好用的OJ甚至没有之一了 全中文的友好操作,充足的语法基础题、二级C语言题、…