Linux之Shell编程详解

article/2025/10/8 6:21:32

精心整理Shell编程的入门,并配图加代码,方便大家跟着操作,但是难免不了存在纰漏,感谢大家的指正与理解!觉的写的不错的小伙伴儿,一键三连支持一下,后期会有持续更新!!谢谢大家罒ω罒

1. 为什么要学习shell编程

1)Linux运维工程师:编写Shell程序进行服务集群管理。
2)Python和JavaEE程序员:编写Shell脚本程序或者是服务器的维护,比如编写一个定时备份数据库的脚本。大3)数据程序员:编写Shell程序来管理集群。

2. Shell 是什么

Shell 是一个命令解释权,它为用户提供了一个向 Linux 内核发送请求以便运行程序界面系统级程序,用户可以用 Shell 来启动、挂起、停止甚至是编写一些程序。
在这里插入图片描述

3. Shell 编程快速入门

3.1 脚本格式要求

1)脚本要以 #!/bin/bash 开头
2)脚本要有可执行权限

3.2 编写第一个Shell程序

进入 Linux 终端,创建一个myShell.sh的shell文件:
在这里插入图片描述

3.3 脚本的执行方式

  • 方式1(不推荐)
    1)不用赋予权限,直接使用sh命令执行即可
    在这里插入图片描述

  • 方式2
    1)首先给Shell脚本执行权限(+x)
    2)在当前目录执行脚本
    在这里插入图片描述

4. Shell变量

4.1 Shell变量的定义规则

1)变量名可以由字母、数字、下划线组成,不能以数字开头。
2)变量名=变量值,等号两侧不能有空格
3)变量名一般习惯为大写

4.2 Shell变量的介绍

  1. Linux Shell 变量分为系统变量自定义变量
  2. 系统变量有$HOME,$PATH,$USER等
    在这里插入图片描述
  3. 显示当前 Shell 中所有变量:set 。

4.3 Shell变量的基本语法

  • 定义变量:变量名=变量值。
  • 删除变量:unset 变量名 。
  • 声明静态变量:readonly 变量名,静态变量不能unset。
  • 使用变量:$变量名
    在这里插入图片描述
    在这里插入图片描述

4.4 将命令返回值赋给变量(重点)

1)A=` ls ` 反引号,执行里面的命令,返回给A
1)A=$(ls) 等价于反引号
在这里插入图片描述

5. Shell设置环境变量(重点)

5.1 基本语法:

1)export 变量名=变量值,将 Shell 变量输出为环境变量。
2)source 配置文件路径,让修改后的配置信息立即生效。
3)echo $变量名,检查环境变量是否生效

5.2 快速入门:

1)在环境变量文件/etc/profile中,添加自定义的环境变量TOMCAT_PATH
在这里插入图片描述
2)使用命令source /etc/profile,使配置文件生效
在这里插入图片描述
3)查看环境变量TOMCAT_PATH的值
在这里插入图片描述
4)在另一个shell程序中使用环境变量
在这里插入图片描述
在这里插入图片描述

6. 位置参数变量

1)$n :$0 代表命令本身、$1-$9 代表第1到9个参数,10以上参数用花括号,如 ${10}。
2)$* :命令行中所有参数,且把所有参数看成一个整体。
3)$@ :命令行中所有参数,且把每个参数区分对待。
4)$# :所有参数个数。
实例:
在 Shell 脚本 myShell.sh ,输出命令行输入的各个参数信息。
在这里插入图片描述
在这里插入图片描述

7. 预定义变量

在赋值定义之前,事先在 Shell 脚本中直接引用的变量。使用和位置参数使用方式相同。
基本语法
$$ :当前进程的 PID 进程号。
$! :后台运行的最后一个进程的 PID 进程号。
$? :最后一次执行的命令的返回状态,0为执行正确,非0执行失败。

8. 运算符

8.1 基本语法

1)$((运算式)) 或 $[运算式]
2)expr m + n 注意 expr 运算符间要有空格
3)expr m - n
4)expr \ *,/,% 分别代表乘,除,取余

8.2 实例

计算(2 + 3) * 4 = 20;
在这里插入图片描述

推荐使用 $[运算式] 进行操作

9. 条件判断

9.1 基本语法

[ condition ] 注意condition前后要有空格。非空返回0,0为 true,否则为 false 。

9.2 常用判断条件

符号含义符号含义
=字符串比较-r文件有读权限
-lt小于-w文件有写权限
-le小于等于-x文件有执行权限
-eq等于-f文件存在并且是常规文件
-gt大于-e文件存在
-ge大于等于-d文件存在并且是一个目录
-ne不等于

第一列是数字之间的比较,第二列是文件权限和类型进行判断

10. 流程控制

10.1 if 判断

10.1.1 基本语法

if [ 条件判断式 ]
then
  程序
fi

#或者(推荐)
if [ 条件判断式 ]
then
  程序
elif [ 条件判断式 ]
then
   程序
fi

注意:if和中括号之间,条件判断与中括号之间都有空格

10.1.2 实例

编写 Shell 程序:如果输入的参数大于等于60,输出“及格了”,否则输出“不及格”。
在这里插入图片描述在这里插入图片描述

10.2 case分支

10.2.1 基本语法

case $变量名 in
“值1”)
如果变量值等于值1,则执行此处程序1
;;
“值2”)
如果变量值等于值2,则执行此处程序2
;;
…省略其它分支…
*)
如果变量值不等于以上列出的值,则执行此处程序
;;
esac

10.2.2 实例

编写 Shell 程序:当命令行参数为1时输出“周一”,2时输出“周二”,其他情况输出“其它”。
在这里插入图片描述
在这里插入图片描述

10.3 for 循环

10.3.1 基本语法

#语法1
for 变量名 in 值1 值2 值3…
do
  程序
done

#语法2
for ((初始值;循环控制条件;变量变化))
do
  程序
done

10.3.2 实例
  1. 打印命令行输入的参数。(注意$* 和 $@ 的区别)
    在这里插入图片描述在这里插入图片描述

$*是把参数看成整体一个,而$@是把参数看成个体

  1. 输出从1加到100的值。
    在这里插入图片描述在这里插入图片描述

10.4 while循环

10.4.1 基本语法

while [ 条件判断式 ]
do
  程序
done

10.4.2 实例

从命令行输入一个参数n,计算1+…+n的值
在这里插入图片描述在这里插入图片描述

11. 读取控制台输入

11 .1 基本语法

read(选项)(参数)
选项
-p:指定读取值时的提示符
-t:指定读取值时等待的时间(秒),如果没有在指定时间内输入,就不再等待了。

11 .2 实例

  1. 在控制台输入一个num值。
  2. 在控制台输入一个num值,并且在3秒内输入。
    在这里插入图片描述在这里插入图片描述

12. 函数

和其它编程语言一样,Shell 编程有系统函数自定义函数,本文只举两个常用系统函数。

12.1 系统函数

主要介绍两个

  • basename,删掉路径最后一个 的所有部分(包括/),常用于获取文件名。
    基本语法:
    • basename [pathname] [suffix]
    • basename [string] [suffix]
    • 如果指定 suffix,也会删掉pathname或string的后缀部分。
  • dirname,删掉路径最后一个 / 的所有部分(包括/),常用于获取文件路径。
    基本语法:
    dirname pathname如果路径中不含 / ,则返回 ‘.’ (当前路径)。
    在这里插入图片描述

12.2 自定义函数

基本语法

[ function ] funname[()]
{
 Action;
 [return int;]
}

调用

funname 参数1 参数2

实例

计算输入两个参数的和。
在这里插入图片描述
在这里插入图片描述


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

相关文章

Linux系统的Shell编程

一. 什么是Shell 1. 在学习Shell编程之前,我们应该要先知道什么是Shell 用户、Shell、Linux内核、硬件的关系如下图: Shell是一个应用程序,也可以说是一个命令解释器,它是用户和Linux内核之间的桥梁,可以将用户在图形界…

Linux中的Shell编程

1.Shell的概念 shell是一个命令行解释器,它为客户提供了一个Linux内核发送请求一边运行程序界面系统级程序,用汉语可以通过shell启动、挂起、停止甚至编写一些程序。 shell还是一个功能强大的编程语言,易于编辑,易于调试&#xff…

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.接下来即可登录…