Shell基础学习---1、Shell概述、脚本入门、变量

简介: Shell基础学习---1、Shell概述、脚本入门、变量

1、Shell 概述

Shell是一个命令解释器,它接收应用程序/用户命令,然后调用操作系统内核。

dc315bc48db94fa0a57ffe26bd05bbd2.png

说明:Shell是一个功能相当强大的编程语言,易编写,易调试、灵活性强。

1、 提供的Shell解释器

8dc5a0b6ba624d759708f6a6089d286f.png

2、bash和sh的关系

cee91b886c1d4c93b70d802f5ed98842.png

3、CentOS默认的解析器是bash

fee00570eca04ad8a81a9af6519fc1d3.png

2、Shell 脚本入门

1、脚本格式

脚本以#!/bin/bash开头(指定解析器)

2、第一个Shell脚本:helloworld.sh。

(1)需求:创建一个Shell脚本,输出helloworld

(2)案例实操

f7e9a278c94f4777adc7a2713d98af1a.png

3、脚本的常用执行方式

(1)采用bash或sh+脚本的相对路径或绝对路径(不用赋予脚步+x权限)

sh+脚本的相对路径

a66e6daa2d704f84a5f5780167f03eb2.png

sh+脚本的绝对路径

a74a4afa7840431ba938be2bbff359e2.png

bash+脚本的相对路径

9a9ff13226bd4cdb823d310c72d1a8c0.png

bash+脚本的绝对路径

bd10943a297f4c199b2ab763f64eb4c9.png

(2)采用输入脚本的绝对路径或相对路径执行脚本(必须具有可执行权限+x)

首选要赋予helloworld.sh脚本的+x权限

ea148287f48245cca0996aba1f261367.png

利用相对路径执行脚本

a93ede73256d40639023e3106ef317f8.png

利用绝对路径执行脚本

2461b898582d4e5692e004947740a53c.png

注意:第一种执行方法本质是bash解析器帮你执行脚本,所以脚本本身不需要执行权限。第二种执行方法,本质是脚步需要自己执行,所有需要可执行权限。

(3)在脚本路径前加上‘.’或者source(个人觉得很重要)

1、有以下脚本

7e6b6d95a37d40fea8ec91063df73cbc.png

2、分别使用sh、bash、./、和. 的方式执行。结果如下:

(1)sh

20f3de64f8d1408bb47fe094e2111228.png

(2)bash

a9fa7931e4e143f9863256d9a3bd684e.png

(3)./

d962d1083616458c8429ee9df1edfd3d.png

(4).

26040376230b4bc89bb3adf627d61815.png

很明显这四个命令执行之后echo $A,不难发现前两个是一样的显示不了,只有最后一个命令才能显示出!!!

原因:

前两种方式都是在当前shell中打开一个子shell来执行脚步内容,当脚本内容结束,则子shell关闭,回到父Shell中。

后两种,也就是使用在脚本路径前加‘.’或者source方式,可以使脚本内容在当前shell里执行,而无需打开子shell!这也就是为什么我们每次修改完/etc/profile文件以后,需要source一下的原因。

开子shell和不开子shell的区别就在于环境变量的继承关系,如在子shell中设置的当前变量,父shell1是看不见的。所有利用前两种方式执行脚本变量A在父shell是没有值的!!!

3、变量

3.1 系统预定义变量

1、常用系统变量

HOME 、PWD、SHELL、USER等

2、案例实操

(查看系统变量的值)

c4e6a37c12764a619a0f14ea264826d3.png

(显示当前Shell中所有变量:set)

cfe1cb35946744759c91303a3e57ca0e.png

3.2 自定义变量

1、基本语法

(1)定义变量:变量名=变量值(注意:=号前后不能有空格)

(2)撤销变量:unset 变量名

(3)声明静态变量:readonly 变量名 (注意:不能unset)

2、变量定义规则

(1)变量名称可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名建议大写。

(2)等号两侧不能有空格

(3)在bash中,变量默认类型都是字符串类型,无法直接进行数值运算。

(4)变量的值如果有空格,需要使用双引号或单引号括起来。

3、案例实操

(1)定义变量A

7f69c02a5e4e47a18769046d076d12d5.png

(2)给变量A重新赋值

8d5bed076721405e98942bee6c5ddc1c.png

(3)撤销变量A

bb4919fcaaee42569e6e7263da9843f1.png

(4)声明静态的变量C=2,不能unset

bb7c9b5b1f5d4990acb6d31dae1769a3.png

(5)在bash中,变量默认类型都是字符串类型,无法直接进行数值运算

cd77801d6ace47fb8b8b696a78654117.png

(6)变量的值如果有空格,需要使用双引号或单引号括起来

3610d3070c5a40fe973088688d29150c.png

(7)可以把变量提示为全局环境变量,可供其他Shell程序使用。

cf9fbdf6e0324382aa8a91a02937b30c.png

3.3 特殊变量

3.3.1 $n

1、基本语法

$n (n为数字,$0代表该脚本名称,$1-$9代表第一到第九个参数,十以上的参数需要用大括号包含,如${10});

2、案例实操

8942931a87f3400aa6d2537b301d0dc6.png

3.3.2 $#

1、基本语法

$# (获取所有输入参数个数,常用于循环,判断参数的个数是否正确以及加强脚本的健壮性)

2、案例实操

9307bb395e2341e99a62667f9a578b47.png

3.3.3 $*、$@

1、基本语法

$* (这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体)

$@ (这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待)

2、案例实操

01421a9d5a52403d8d0cc6d2722c900f.png

3.3.4 $?

1、基本语法

$? (最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非0,则证明上一个命令执行不准确。)

2、案例实操

1a14458d41dd480f8f59d32dc413e929.png

相关文章
|
24天前
|
存储 安全 Unix
七、Linux Shell 与脚本基础
别再一遍遍地敲重复的命令了,把它们写进Shell脚本,就能一键搞定。脚本本质上就是个存着一堆命令的文本文件,但要让它“活”起来,有几个关键点:文件开头最好用#!/usr/bin/env bash来指定解释器,并用chmod +x给它执行权限。执行时也有讲究:./script.sh是在一个新“房间”(子Shell)里跑,不影响你;而source script.sh是在当前“房间”里跑,适合用来加载环境变量和配置文件。
277 9
|
24天前
|
存储 Shell Linux
八、Linux Shell 脚本:变量与字符串
Shell脚本里的变量就像一个个贴着标签的“箱子”。装东西(赋值)时,=两边千万不能有空格。用单引号''装进去的东西会原封不动,用双引号""则会让里面的$变量先“变身”再装箱。默认箱子只能在当前“房间”(Shell进程)用,想让隔壁房间(子进程)也能看到,就得给箱子盖个export的“出口”戳。此外,Shell还自带了$?(上条命令的成绩单)和$1(别人递进来的第一个包裹)等许多特殊箱子,非常有用。
122 2
|
4月前
|
Shell
Shell脚本循环控制:shift、continue、break、exit指令
使用这些命令可以让你的Shell脚本像有生命一样动起来。正确使用它们,你的脚本就能像一场精心编排的舞蹈剧目,既有旋律的起伏,也有节奏的跳跃,最终以一场惊艳的表演结束。每一个动作、每一个转折点,都准确、优雅地完成所需要表达的逻辑。如此,你的脚本不只是冰冷的代码,它透过终端的界面,跳着有节奏的舞蹈,走进观众——使用者的心中。
216 60
|
1月前
|
数据采集 监控 Shell
无需Python:Shell脚本如何成为你的自动化爬虫引擎?
Shell脚本利用curl/wget发起请求,结合文本处理工具构建轻量级爬虫,支持并行加速、定时任务、增量抓取及分布式部署。通过随机UA、异常重试等优化提升稳定性,适用于日志监控、价格追踪等场景。相比Python,具备启动快、资源占用低的优势,适合嵌入式或老旧服务器环境,复杂任务可结合Python实现混合编程。
|
3月前
|
Web App开发 缓存 安全
Linux一键清理系统垃圾:释放30GB空间的Shell脚本实战​
这篇博客介绍了一个实用的Linux系统盘清理脚本,主要功能包括: 安全权限检查和旧内核清理,保留当前使用内核 7天以上日志文件清理和系统日志压缩 浏览器缓存(Chrome/Firefox)、APT缓存、临时文件清理 智能清理Snap旧版本和Docker无用数据 提供磁盘空间使用前后对比和大文件查找功能 脚本采用交互式设计确保安全性,适合定期维护开发环境、服务器和个人电脑。文章详细解析了脚本的关键功能代码,并给出了使用建议。完整脚本已开源,用户可根据需求自定义调整清理策略。
327 1
|
5月前
|
存储 Unix Shell
确定Shell脚本在操作系统中的具体位置方法。
这对于掌握Linux的文件系统组织结构和路径方面的理解很有帮助,是我们日常工作和学习中都可能使用到的知识。以上讲解详细清晰,应用简便,是每一个想要精通操作系统的计算机爱好者必备的实用技能。
125 17
|
5月前
|
Linux Shell
Centos或Linux编写一键式Shell脚本删除用户、组指导手册
Centos或Linux编写一键式Shell脚本删除用户、组指导手册
143 4
|
5月前
|
Linux Shell 数据安全/隐私保护
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
310 3
|
6月前
|
Linux Shell
在Linux、CentOS7中设置shell脚本开机自启动服务
以上就是在CentOS 7中设置shell脚本开机自启动服务的全部步骤。希望这个指南能帮助你更好地管理你的Linux系统。
495 25
|
Shell 索引
shell脚本入门到实战(四)- 数组
shell脚本入门到实战(四)- 数组
137 0