一、shell 脚本入门
1.1 什么是 shell 脚本
shell 脚本是包含一系列 Linux 命令的文本文件,可批量执行命令,实现自动化操作。其核心价值在于整合多个命令,按顺序执行并处理结果。
1.2 多命令执行方式
- 分号分隔:依次执行多个命令,前一个命令不影响后一个。
示例:date ; who(先显示日期,再显示登录用户)。 - 管道符连接:将前一个命令的输出作为后一个命令的输入(仅显示最终结果)。
示例:ps aux | grep bash(筛选包含 bash 的进程)。
二、创建与执行 shell 脚本
2.1 脚本文件格式
- 创建文件:使用
vim 脚本名.sh(如vim test.sh)。 - 首行声明:必须以
#!/bin/bash开头,指定脚本解释器为 bash。 - 添加命令:在后续行写入需要执行的 Linux 命令。
示例脚本(test.sh):
2.2 执行脚本的两种方法
(1)通过 bash 命令执行
无需执行权限,直接调用 bash 解释器:
(2)直接执行脚本(需权限)
- 赋予可执行权限:
chmod u+x test.sh(仅当前用户可执行)。 - 通过路径执行:
- 相对路径:
./test.sh(当前目录下)。 - 绝对路径:
/home/zhang/test.sh(全路径)。
- 相对路径:
三、脚本中的输出与变量
3.1 echo 命令输出文本
- 基本用法:
echo "文本内容"(自动换行)。 - 取消换行:
echo -n "文本内容"(后续输出与当前行衔接)。
示例:
3.2 变量的使用
(1)系统环境变量
直接引用系统预设变量(需加$),常用变量:
$USER:当前用户名。$UID:当前用户 ID。$HOME:当前用户主目录。
示例脚本(var_test.sh):
(2)用户自定义变量
- 定义规则:
变量名=值(等号前后无空格,区分大小写)。 - 引用变量:
$变量名。 - 作用范围:仅在当前脚本中有效,退出脚本后失效。
示例:
(3)命令输出赋值给变量
将命令的执行结果存储到变量,两种方式:
- 反引号:
变量名=命令(如`today=`date +%Y%m%d)。 $()格式:变量名=$(命令)(推荐,可读性更好)。
示例(获取当前日期并生成日志文件):
四、文本行数统计:wc 命令
- 功能:统计文本的行数、词数、字节数。
- 常用参数:
-l:仅统计行数。- 通配符
*:统计所有文件。
示例:
五、脚本中的数学运算
5.1 整数运算
(1)expr 命令
需注意运算符前后加空格,特殊符号(如*)需转义(\*)。
示例:
(2)与(()) 格式
推荐用法,无需空格和转义,支持变量运算。
示例:
5.2 浮点运算(bc 工具)
bash 默认不支持小数运算,需使用bc工具(通过管道符调用)。
- 基本格式:
变量=$(echo "scale=小数位数; 运算式" | bc)。
示例:
六、脚本的退出状态码
- 每个命令执行后会返回退出状态码(0~255),
$?变量存储最后一个命令的状态码。 - 状态码含义:
0:命令执行成功。- 非 0:执行失败(如
127表示命令不存在)。
七、实践练习题(附脚本示例)
练习 1:基础脚本编写
创建脚本info.sh,输出当前时间、登录用户及系统变量。
练习 2:变量与命令输出
创建脚本log.sh,将/usr/bin目录的文件列表写入带日期的日志文件,并统计行数。
练习 3:数学运算
创建脚本c


1931

被折叠的 条评论
为什么被折叠?



