1. Shell编程入门:从基础到实战的20个经典案例
Shell脚本是Linux系统管理和自动化任务的利器,掌握它能让你的工作效率提升数倍。今天我将通过20个递进式实例,带你系统掌握Shell编程的核心技巧。这些案例都是我多年运维工作中反复验证过的实用代码,每个例子都包含基础版和进阶版,适合不同阶段的学习者。
提示:所有示例均在GNU Bash 5.0+环境测试通过,建议使用VS Code搭配ShellCheck插件编写脚本
1.1 基础输出与变量定义
1.1.1 基础变量与字符串拼接
bash复制#!/bin/bash
greeting="Hello"
name="World"
# 字符串拼接的三种经典方式
echo "${greeting}, ${name}!" # 推荐:清晰分隔
echo $greeting"_"$name # 无空格拼接
echo "${greeting}${name}2026" # 变量+固定字符
核心知识点:
- 变量定义时等号两侧不能有空格
${var}形式比$var更安全明确- 字符串拼接无需特殊符号,直接连接即可
运行结果:
code复制Hello, World!
Hello_World
HelloWorld2026
1.1.2 变量默认值与空值处理
bash复制#!/bin/bash
unset undefined_var
default_value="DEFAULT"
# 变量为空时使用默认值
echo "示例1: ${undefined_var:-$default_value}"
# 变量为空时赋值默认值并保存
echo "示例2: ${undefined_var:=$default_value}"
echo "当前值: $undefined_var"
# 检查变量是否设置
echo "示例3: ${undefined_var:+已设置}"
进阶技巧:
${var:-默认值}:空值时临时替换${var:=默认值}:空值时永久赋值${var:+已设置}:测试变量存在性${#var}:获取字符串长度${var%后缀}:截取字符串
1.2 用户输入处理技巧
1.2.1 基础输入与非空校验
bash复制#!/bin/bash
read -p "请输入用户名: " username
while [[ -z "$username" ]]; do
read -p "用户名不能为空,请重新输入: " username
done
echo "欢迎, $username!"
注意事项:
-z判断字符串是否为空[[ ]]比[ ]支持更多特性- 变量引用建议加双引号避免空格问题
1.2.2 密码输入与超时控制
bash复制#!/bin/bash
if read -t 10 -s -p "请在10秒内输入密码: " passwd; then
echo -e "\n验证中..."
# 实际场景这里应该是密码验证逻辑
echo "密码已接收
