Shell脚本编程教程

从入门到精通的命令行艺术

什么是Shell脚本?

Shell脚本是一种为shell编写的脚本程序,它可以将一系列命令组合在一起,实现自动化任务、系统管理和程序开发等功能。Shell脚本在Unix/Linux系统中广泛应用,是系统管理员和开发人员的必备技能。

小贴士: Shell脚本通常以.sh作为文件扩展名,但这并不是必须的。

第一个Shell脚本

让我们从一个简单的"Hello World"脚本开始:

#!/bin/bash
# 这是我的第一个Shell脚本
echo "Hello World!"

要运行这个脚本,你需要:

  1. 将上面的代码保存为hello.sh
  2. 给脚本添加执行权限:chmod +x hello.sh
  3. 运行脚本:./hello.sh
注意: 第一行的#!/bin/bash称为shebang,它指定了用来执行脚本的解释器。

变量

Shell脚本中的变量不需要声明,直接赋值即可:

#!/bin/bash
name="John Doe"
age=30
echo "My name is $name and I am $age years old."

特殊变量

条件判断

Shell脚本使用if语句进行条件判断:

#!/bin/bash
read -p "Enter a number: " num

if [ $num -gt 10 ]; then
    echo "The number is greater than 10"
elif [ $num -eq 10 ]; then
    echo "The number is equal to 10"
else
    echo "The number is less than 10"
fi

常用比较运算符

循环

for循环

#!/bin/bash
for i in 1 2 3 4 5; do
    echo "Number: $i"
done

# 或者使用序列
for i in {1..5}; do
    echo "Number: $i"
done

while循环

#!/bin/bash
count=1
while [ $count -le 5 ]; do
    echo "Count: $count"
    count=$((count + 1))
done

until循环

#!/bin/bash
count=1
until [ $count -gt 5 ]; do
    echo "Count: $count"
    count=$((count + 1))
done

函数

Shell脚本中可以定义函数来组织代码:

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

# 调用函数
greet "Alice"
greet "Bob"
注意: 使用local关键字可以声明局部变量,否则变量默认为全局的。

实用示例

备份脚本

#!/bin/bash
# 备份目录脚本
backup_dir="/backup"
source_dir="/var/www"

if [ ! -d "$backup_dir" ]; then
    mkdir -p "$backup_dir"
fi

backup_file="backup_$(date +%Y%m%d_%H%M%S).tar.gz"

echo "Starting backup..."
tar -czf "$backup_dir/$backup_file" "$source_dir"

if [ $? -eq 0 ]; then
    echo "Backup completed successfully: $backup_file"
else
    echo "Backup failed!" >&2
    exit 1
fi

系统监控脚本

#!/bin/bash
# 系统监控脚本
echo "===== System Information ====="
echo "Hostname: $(hostname)"
echo "Uptime: $(uptime -p)"
echo "Load Average: $(uptime | awk -F'load average: ' '{print $2}')"
echo "Memory Usage: $(free -h | awk '/Mem/{print $3 "/" $2}')"
echo "Disk Usage:"
df -h | grep -v "tmpfs"

调试技巧

警告: 在生产环境中运行脚本前,务必在测试环境中充分测试。

进一步学习

要深入学习Shell脚本编程,可以参考以下资源:

实践是学习Shell脚本的最佳方式,尝试编写自己的脚本来解决实际问题!

下载示例脚本 更多教程