# Shell 脚本编程

# 脚本基础

# 1. 创建脚本文件

#!/bin/bash
# 这是一个简单的Shell脚本

echo "Hello, Shell Script!"

# 2. 脚本执行权限

# 添加执行权限
chmod +x script.sh

# 执行脚本
./script.sh

# 变量

# 1. 变量定义和使用

# 定义变量
name="Shell"
age=25

# 使用变量
echo "Name: $name"
echo "Age: ${age}"

# 2. 环境变量

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

# 读取环境变量
echo $HOME
echo $USER

# 控制结构

# 1. 条件语句

# if语句
if [ $age -gt 18 ]; then
    echo "成年人"
else
    echo "未成年"
fi

# case语句
case $1 in
    "start")
        echo "启动服务"
        ;;
    "stop")
        echo "停止服务"
        ;;
    *)
        echo "未知命令"
        ;;
esac

# 2. 循环语句

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

# while循环
count=0
while [ $count -lt 5 ]; do
    echo $count
    count=$((count + 1))
done

# 函数

# 1. 函数定义

# 简单函数
sayHello() {
    echo "Hello, $1!"
}

# 带返回值的函数
sum() {
    result=$(($1 + $2))
    return $result
}

# 2. 函数调用

# 调用函数
sayHello "World"

# 获取返回值
sum 5 3
echo $?

# 数组

# 定义数组
fruits=("apple" "banana" "orange")

# 访问数组元素
echo ${fruits[0]}
echo ${fruits[@]}  # 所有元素

# 数组长度
echo ${#fruits[@]}

# 字符串处理

# 字符串拼接
str1="Hello"
str2="World"
result="$str1 $str2"

# 字符串长度
echo ${#str1}

# 字符串截取
echo ${result:0:5}

# 文件操作

# 读取文件
while read line; do
    echo $line
done < file.txt

# 写入文件
echo "新内容" > file.txt
echo "追加内容" >> file.txt

# 错误处理

# 捕获错误
if ! command; then
    echo "命令执行失败"
    exit 1
fi

# 设置错误处理
set -e  # 遇到错误立即退出
trap 'echo "发生错误"; exit 1' ERR

# 最佳实践

  1. 脚本开头

    #!/bin/bash
    set -e  # 错误时退出
    set -u  # 使用未定义变量时报错
    
  2. 注释和文档

    # 脚本说明
    # 作者:xxx
    # 日期:xxx
    
  3. 变量命名

    • 使用有意义的变量名
    • 常量使用大写
    • 临时变量使用小写

# 练习题

  1. 编写一个文件备份脚本
  2. 创建系统监控脚本
  3. 实现简单的日志处理脚本

# 下一步

学习更多Shell脚本的高级特性,如正则表达式、进程管理等。