shell编程(上)

目录

 初识 Shell 编程:Linux 环境下的“轻量级”开发体验

第一个shell脚本

基础语法

变量:

1、定义变量有三种方式:

2、使用变量:

3、将命令的结果赋值给变量:

4、设置只读变量:

5、删除变量:

6、向脚本传递参数:​编辑

 7、Shell 特殊参数列表/Shell 内置预定义变量:

字符串:

1、三种定义:

2、获取字符串的长度

3、字符串的拼接​编辑

4、字符串的截取

数组:

1、定义与创建

​编辑

2、读取

3、关联数组

4、访问关联数组​编辑

5、获取数组中的所有元素​编辑

6、获取数组的长度:使用#​编辑

作业:编写一个九九乘法表


 初识 Shell 编程:Linux 环境下的“轻量级”开发体验

在编程世界里,不同语言往往与特定操作系统有着更紧密的适配性,Python 与 Windows、Shell 与 Linux 便是其中一组典型搭配。不过相较于 Python 常需依托集成开发环境(IDE)开展开发,Shell 编程的“轻量”与“原生”特性,恰好契合了 Linux 系统的设计逻辑,也让它成为玩转 Linux 不可或缺的工具。
首先需要明确一个核心区别:Shell 并非传统意义上的“程序设计语言”,而是更偏向“命令解释语言”。它的核心作用是“翻译”用户输入的命令,将其传递给 Linux 内核执行——比如我们熟悉的 `ls`(查看目录)、`cd`(切换目录)、`mkdir`(创建文件夹)等基础命令,本质上都是 Shell 可识别的“最小执行单元”。而当我们将一系列命令按逻辑组合,用条件判断(`if-else`)、循环(`for`/`while`)等语法串联成脚本文件(后缀通常为 `.sh`)时,便形成了“Shell 编程”

简单来说,Shell 是 Linux 系统的“原生交互助手”:它以命令为核心,依托系统自带的shell解释器和文本编辑器就能开发,既体现了自身“命令解释语言”的特性,也完美契合了 Linux“一切皆文件”的底层逻辑,是入门 Linux 系统开发与运维的必备技能。

Linux 系统默认会自带 Shell 解释器,以上是常见的 Shell 版本及其对应的可执行文件路径。

第一个shell脚本

在 Linux 系统中,只要打开终端(Terminal),就能直接开启开发,我们这里使用xshell:

1. 用简单的文本编辑器(如 `vim`)编写脚本,比如输入 `vim test.sh` 即可创建并编辑第一个 Shell 脚本;(编辑器中,按i 进入插入模式开始编辑,完成后esc退出插入模式,按 :wq保存并退出)

这里echo相当于python中的print,会输出后面的内容。

#!/bin/bash  是声明使用哪个版本的shell解释器版本

这里第一个方法直接指定shell解释器来执行文件,就可以不加第一行的#!/bin/bash ,第二种方法会使用默认的shell,这里我们声明了就会使用/bin/bash。

2、执行脚本,有三种方法:

比如我们用第一种方法,先要给文件加可执行的权限,然后用./test.sh执行:

基础语法

任何一门语言都离不开基础语法的学习,了解了什么是shell编程之后,接下来我给大家介绍shell编程的基础语法。

变量:

在shell语言中,只用两种变量类型,字符串和数值。shell语言中定义变量不需要声明变量类型,直接赋值即可(脚本语言往往如此)。变量的命名规则与大多数编程语言一样(老生常谈)。

需要注意的是,在shell语言中“=”的周围不能有空格

1、定义变量有三种方式:

三种方式的区别:

例子:不加引号的方式,不保留空格,也会是说赋值到空格,变量就定义结束了,后面的语句就会报错:

这里的$符号表示返回变量的值,若是直接echo a,就会直接打印字母a。

执行结果:

2、使用变量:

3、将命令的结果赋值给变量:

4、设置只读变量:

使用readonly命令可以将变量定义或者设置成只读变量,变量的值之后不能改变。

5、删除变量:

使用变量unset。注意unset不能删除只读变量。

6、向脚本传递参数:

直接在文件名后面输入参数即可实现传递,值得注意的是,参数0代表文件名。

 7、Shell 特殊参数列表/Shell 内置预定义变量:

例子:

cat是查看文件的命令。

执行结果:

注;

字符串:

1、三种定义:

这里就是前面提到变量的三种定义方式,前面说的变量就是指字符串。毕竟Linux的变量只有字符串和数值。

2、获取字符串的长度

3、字符串的拼接
4、字符串的截取

字符串截取有两种方式

从指定位置开始截取:

从指定字符(字符串)开始截取:

1、向右截取

这里我们匹配到第一个指定的字符就会开始截取。如果我们需要匹配到指定字符的最后一个时再开始截取,可以使用两次#:

2、向左截取

这里我们使用两次%,是指第一次匹配到指定字符,与向右截取反过来了。

数组:

1、定义与创建

2、读取

3、关联数组

关联数组其实就是python中的字典。

4、访问关联数组
5、获取数组中的所有元素
6、获取数组的长度:使用#

作业:编写一个九九乘法表

大家可以自己尝试编写一个乘法表,这里附上我的方法:

补充一个冷知识,shell编程中对缩进是没有要求的,大家自己能看懂代码就行。

for i in {1..9};do   #外层循环1到9
    for j in $(seq $i 9);do     #内层循环,从行数到9
    echo -n $i × $j=$((i*j))  # 输出i×j,-n 参数表示不换行,因为我想在一行输出一个内层的全部循环
    echo -n  " "   # 上面代码虽然不换行了,但是输出结果连载一起,这里输出一个空格用以区分
    done
    echo #          #结束一次内层循环,输出一个换行,开始下一层的循环
 done

运行结果:

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值