Linux系统——shell脚本

一、Shell脚本语言基本概念

1. 编程语言分类 - 静态和动态语言:静态编译语言使用变量前需先声明类型且类型不可改变,如Java、C;动态编译语言不事先声明,可随时改变类型,如Shell、Python、JavaScript、PHP。 - 强类型和弱类型语言:强类型语言不同类型数据操作需强制转换,如Java、C#;弱类型语言运行时会隐式做数据类型转换,如Shell、PHP、JavaScript。

2. 脚本检查工具 - 使用`yum install -y epel-release`和`yum install -y ShellCheck`安装脚本检查工具。 ### 二、Shell脚本基本结构 1. 用途 - 自动化常用命令、执行系统管理和故障排除、创建简单应用程序、处理文本或文件。

2. 基本结构- 由各种系统命令组合、数据存储(变量、数组)、表达式、控制语句(if、case、for、while)构成。 - 首行需执行shebang机制,如`#!/bin/bash`。

3. 创建过程- 使用vim创建文本文件,首行包含shell声明序列。 - 加执行权限,如`chmod +x shellScript/hello.sh`。 - 运行脚本,可直接运行解释器并将脚本作为参数,如`/root/shellScript/hello.sh`。

4. 脚本注释规范- 包含调用语言、程序名、版本号、更改时间、作者信息、程序作用及注意事项、各版本更新简要说明。

5. 执行脚本方式 - 增加执行权限,执行时创建子shell,不影响现有shell环境,如`chmod +x sh`和`./sh`。 - 使用`.`或者`source`,执行时不创建子shell,会影响现有shell环境,但尽量不使用该方式。

 三、Shell脚本变量用法 1. 变量类型 - 内置变量(如PS1、PATH、UID等)、用户自定义变量、预定义变量、位置变量。 - 变量数据类型有字符串、数值(bash不支持浮点数)。

2. 变量命名法则- 不能使用保留字,只能用数字、字母及下划线,且不能以数字开头。 - 见名思意,统一命名规则,变量名大写,局部变量小写,函数名小写。

3. 变量定义和引用- 变量赋值:`name="value"`,value可以是直接字符串、变量引用、命令应用、通配符等。 - 变量引用:`$name`或`${name}`。 - 弱引用`"$name"`变量引用会被替换成变量值,强引用`'$name'`变量引用保持原字符串。 - 查看已定义变量用`set`,删除变量用`unset`。

4. 环境变量- 可使子进程继承父进程变量,一般在配置文件中使用。 - 声明和赋值:`export name=VALUE`或`declare -x name =VALUE`。 - 显示所有环境变量用`env`、`printenv`、`export`、`declare -x`。

5. 只读变量 - 只能声明定义,后续不能修改和删除。 - 声明:`readonly name`或`declare -r name`。 - 查看:`readonly [-p]`或`declare -r`。

6. 位置变量- `$1,$2,...`对应命令行传递的参数,`shift[n]`换位置,最多9个。 - 预定义变量:`$0`为命令本身,`$*`将所有参数合成一个字符串,`$@`每个参数为独立字符串,`$#`为参数个数,`$?`为上个命令的退出状态,`$$`为当前shell进程ID。 - 清空所有位置变量用`set --`。

7. **退出状态码变量** - `$?`取值范围为[0,255],0代表成功,非0代表失败。 - 自定义退出状态码用`exit [n]`。

 四、Shell字符串操作

1. 字符串表示方式区别 - 单引号包围的字符串:任何字符原样输出,使用变量无效,不能出现单引号。 - 双引号包围的字符串:包含变量会被解析,可出现转义后的双引号。 - 不被引号包围的字符串:出现变量会被解析,不能出现空格。

2. 字符串长度获取 - 使用`${#string_name}`获取字符串长度。

3. 字符串拼接 - 将两个字符串并排放在一起即可实现拼接。

4. 字符串截取 - 从指定位置开始截取: - 从左边开始计数:`${string:start:length}`。 - 从右边开始计数:`${string:0-start:length}`。 - 从指定字符(子字符串)开始截取: - 使用`#`截取右边字符:`${string#*chars}`或`${string##*chars}`。 - 使用`%`截取左边字符:`${string%chars*}`或`${string%%chars*}`。

5. 格式化输出printf - 语法格式:`printf "指定的格式" "文本1" "文本2" .....`。 - 常用格式替换符:`%s`(字符串)、`%f`(浮点格式)、`%d,%i`(十进制整数)等。 - 常用转义字符:`\n`(换行)、`\r`(回车)、`\t`(水平制表符)等。

 五、Shell脚本运算

1. 算数运算- 支持整数运算,运算符有`+`、`-`、`*`、`/`、`%`、`**`。 - 实现算术运算方式:`let var=算术表达式`、`var=$[算术表达式]`、`var=$((算术表达式))`、`var=$(expr arg1 arg2 arg3 ...)`、`declare -i var = 数值`、`echo '算术表达式' | bc`(支持浮点数)。 - 增强型赋值:`+=`、`-=`、`*=`、`/=`、`%=`、`++`、`--`。 - 内建随机数生成器变量`$RANDOM`,取值范围0 - 32767。 2. **逻辑运算(简单了解)** - 与:`&`,1 与 1 = 1,1 与 0 = 0,0 与 1 = 0,0 与 0 = 0。 - 或:`|`,1 或 1 = 1,1 或 0 = 1,0 或 1 = 1,0 或 0 = 0。 - 非:`!`,!1 = 0,!0 = 1。 - 异或:`^`,1 ^ 1 = 0,1 ^ 0 = 1,0 ^ 1 = 1,0 ^ 0 = 0。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值