← 返回首页
📜

Shell脚本编程入门

📂 devops ⏱ 2 min 291 words

Shell脚本编程入门

什么是Shell脚本

Shell脚本是将一系列命令写入文件中,然后批量执行的程序。它是Linux自动化运维的基础工具。

第一个Shell脚本

#!/bin/bash
# 这是一个注释
echo "Hello, World!"

执行脚本:

chmod +x script.sh
./script.sh

变量

定义和使用变量

# 定义变量(等号两边不能有空格)
name="DevOps"
version=1.0

# 使用变量(推荐使用${}格式)
echo "Welcome to ${name}"
echo "Version: ${version}"

# 只读变量
readonly PI=3.14159

# 删除变量
unset name

环境变量

# 查看环境变量
env
echo $PATH
echo $HOME

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

特殊变量

变量 说明
$0 脚本文件名
$1-$9 第1-9个参数
$# 参数个数
$@ 所有参数
$? 上一条命令的退出状态
$$ 当前脚本的进程ID

条件判断

if语句

if [ condition ]; then
    # 代码
elif [ condition ]; then
    # 代码
else
    # 代码
fi

条件表达式

# 字符串比较
[ "$str1" = "$str2" ]      # 相等
[ "$str1" != "$str2" ]     # 不相等
[ -z "$str" ]              # 字符串为空
[ -n "$str" ]              # 字符串不为空

# 数值比较
[ $a -eq $b ]    # 等于
[ $a -ne $b ]    # 不等于
[ $a -gt $b ]    # 大于
[ $a -lt $b ]    # 小于

# 文件测试
[ -f file ]      # 文件存在
[ -d dir ]       # 目录存在
[ -r file ]      # 文件可读
[ -w file ]      # 文件可写
[ -x file ]      # 文件可执行

循环

for循环

# 遍历列表
for i in 1 2 3 4 5; do
    echo "Number: $i"
done

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

# 遍历文件
for file in /var/log/*.log; do
    echo "Processing: $file"
done

while循环

# 基本while循环
count=1
while [ $count -le 5 ]; do
    echo "Count: $count"
    ((count++))
done

# 读取文件内容
while IFS= read -r line; do
    echo "Line: $line"
done < file.txt

until循环

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

函数

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

# 调用函数
greet "DevOps"

# 返回值
add() {
    local result=$(($1 + $2))
    echo $result
}
sum=$(add 3 5)
echo "Sum: $sum"

实践:系统监控脚本

#!/bin/bash
echo "=== 系统信息 ==="
echo "主机名: $(hostname)"
echo "系统版本: $(cat /etc/os-release | grep PRETTY_NAME | cut -d'"' -f2)"
echo ""
echo "=== 资源使用 ==="
echo "CPU使用率: $(top -bn1 | grep "Cpu(s)" | awk '{print $2}')%"
echo "内存使用:"
free -h | grep Mem
echo ""
echo "磁盘使用:"
df -h | grep -E "^/dev/"

总结

Shell脚本是运维自动化的基础。掌握变量、条件判断、循环和函数,就能编写各种自动化脚本来提高工作效率。