Skip to content

💻 Shell

概述:Shell 是操作系统的命令解释器,提供用户与内核交互的接口。Shell 脚本广泛用于系统管理、自动化运维、CI/CD 管道等场景,是每位开发者和运维工程师必备的技能。

概述

Shell 属于 脚本 & 运维语言 分类。常见的 Shell 类型包括 Bourne Shell (sh)、Bash、Zsh、Fish 等,其中 Bash 是 Linux 系统中最广泛使用的 Shell。

语言特点

  • 系统级操作:直接调用系统命令,与操作系统无缝集成
  • 管道组合:通过管道符 | 将简单命令组合成强大功能
  • 快速原型:无需编译,即时执行,适合快速验证想法
  • 自动化利器:批量操作、定时任务、部署脚本的核心工具
  • 跨平台:类 Unix 系统通用,Windows 也可通过 WSL 或 Git Bash 使用

Hello World

sh
#!/bin/sh
echo "Hello, World!"

基础语法

变量

sh
# 变量赋值(等号两侧不能有空格)
NAME="Shell"
echo $NAME

# 环境变量
export PATH=$PATH:/usr/local/bin

# 特殊变量
echo "脚本名: $0"
echo "第一个参数: $1"
echo "参数个数: $#"
echo "所有参数: $@"
echo "上一条命令退出码: $?"

# 命令替换
CURRENT_DIR=$(pwd)
FILES_COUNT=`ls | wc -l`

控制流

sh
# if-elif-else
if [ $age -ge 18 ]; then
    echo "成年人"
elif [ $age -ge 12 ]; then
    echo "青少年"
else
    echo "儿童"
fi

# for 循环
for i in 1 2 3 4 5; do
    echo "Number: $i"
done

# C 风格 for 循环
for ((i=0; i<10; i++)); do
    echo "Count: $i"
done

# while 循环
while read line; do
    echo "$line"
done < input.txt

# case 语句
case $1 in
    start)   echo "Starting..." ;;
    stop)    echo "Stopping..." ;;
    restart) echo "Restarting..." ;;
    *)       echo "Usage: $0 {start|stop|restart}" ;;
esac

函数

sh
# 函数定义
greet() {
    local name=$1
    echo "Hello, $name!"
}

# 调用函数
greet "Shell"

# 带返回值
add() {
    echo $(($1 + $2))
}
result=$(add 3 5)
echo "3 + 5 = $result"

文本处理

sh
# grep 搜索
grep -r "pattern" /path/to/files

# sed 替换
sed 's/old/new/g' file.txt

# awk 处理
awk '{print $1, $3}' data.txt

# find + xargs
find . -name "*.log" -mtime +7 | xargs rm -f

应用领域

  • 系统管理:服务器配置和维护脚本
  • 自动化运维:批量部署、健康检查、日志清理
  • CI/CD:Jenkins、GitLab CI 构建和部署管道
  • 数据处理:日志分析、文本处理、数据格式转换
  • 定时任务:cron 定时执行系统
  • 开发工具:编译脚本、测试运行器

开发环境搭建

  1. Linux/Mac 系统自带 Shell
  2. Windows 用户:安装 WSL2 或 Git Bash
  3. 编辑器:VS Code + ShellCheck 扩展
  4. 调试:bash -x script.sh 开启调试模式

学习路线

  1. 入门阶段:基本命令 → 变量和参数 → 条件判断 → 循环
  2. 进阶阶段:函数 → 文本处理三剑客(grep/sed/awk)→ 进程管理
  3. 实战阶段:系统管理脚本 → 自动化部署 → CI/CD 管道
  4. 高级阶段:性能优化 → 安全编程 → 复杂工具链编排

返回首页 | 查看所有语言

编程语言技术文档