shell的基础
Shell 比较运算符
-eq:等于(==)
-ne:不等于(!=)
-gt:大于(>,需转义)
-ge:大于等于(>=)
-lt:小于(<,需转义)
-le:小于等于(<=)
单中括号 [ ] 语法规则
- 表达式前后必须加空格(如
[ $a -eq 1 ])。 - 变量引用建议用双引号包裹(如
[ "$var" = "abc" ])。 - 字符串比较用
=或!=,数字比较用-eq、-ne、-gt等专用运算符。
双中括号 [[ ]] 语法规则
- 表达式前后建议加空格。
- 变量引用可不加双引号(如
[[ $var = abc ]])。 - 支持逻辑运算符
&&(与)、||(或),例如[[ $a != 1 && $a != 2 ]]。 - 支持模式匹配(如
[[ $str == *abc* ]]检查字符串是否包含abc)。 - 支持正则表达式(用
=~,如[[ $str =~ ^[0-9]+$ ]]判断是否为数字)。 - 数字比较可直接用
>、<等符号(无需-gt、-lt)。
常用逻辑操作符
-a或&&:逻辑与(需前后条件均成立)。-o或||:逻辑或(只需一个条件成立)。!:逻辑否。
随机数生成示例
number=$(($RANDOM % 10)) # 生成0-9的随机数
Shell 脚本调试
sh -x script.sh # 显示执行过程的详细调试信息
Shell 脚本编写规范
- 脚本头:指定解释器(如
#!/bin/bash)。 - 变量定义:使用全大写命名,避免与系统变量冲突。
- 环境判断:检查依赖项或运行环境(如
[ -f "/path/file" ])。 - 函数封装:复用代码逻辑(如日志函数、错误处理函数)。
- 交互逻辑:无交互时用条件判断,有交互时用
read命令。 - 结果输出:明确提示执行状态(如
echo "Backup completed.")。
常见 Shell 脚本用途
- 重复任务:自动化备份、日志清理、批量用户管理。
- 系统巡检:检查磁盘空间、服务状态、性能指标。
- 服务管理:一键安装、配置、启停服务(如 Nginx/MySQL)。
注意事项
- 变量赋值等号两侧不能有空格(如
var=value)。 - 条件测试中,
[ ]是命令,[[ ]]是关键字,后者功能更强。 - 字符串比较避免用
-eq,数字比较避免用=。
