Linux Shell 脚本是一种强大的自动化工具,通过编写脚本可以批量执行命令、管理系统任务或处理复杂逻辑。以下是 Shell 脚本的详细使用指南:
![图片[1]_Linux Shell 脚本编程:从入门到实战_知途无界](https://zhituwujie.com/wp-content/uploads/2025/06/d2b5ca33bd20250603094441.png)
1. 脚本基础
1.1 创建脚本文件
#!/bin/bash
# 这是一个注释
echo "Hello, World!" # 输出文本
- 第一行
#!/bin/bash(Shebang):指定解释器(如/bin/bash、/bin/sh)。 - 注释:以
#开头(Shebang 除外)。
1.2 保存与权限
nano script.sh # 使用文本编辑器创建文件
chmod +x script.sh # 添加可执行权限
2. 运行脚本
./script.sh # 直接执行(需可执行权限)
bash script.sh # 显式指定解释器(无需权限)
sh script.sh # 使用 sh 解释器
source script.sh # 在当前 Shell 中执行(影响当前环境)
3. 变量与参数
3.1 变量定义与使用
name="Linux" # 定义变量(无空格)
echo "Hello, $name" # 使用变量(推荐双引号)
echo "Hello, ${name}!" # 大括号明确变量边界
- 注意:变量名区分大小写,默认全局作用域。
3.2 位置参数
echo "第一个参数: $1" # 脚本的第一个参数
echo "所有参数: $@" # 所有参数列表
echo "参数个数: $#" # 参数数量
$0表示脚本名称,$?表示上一条命令的退出状态(0 表示成功)。
4. 输入与输出
4.1 用户输入
read -p "请输入名字: " username
echo "欢迎, $username!"
4.2 输出重定向
echo "内容" > file.txt # 覆盖写入
echo "追加" >> file.txt # 追加写入
command 2> error.log # 重定向错误输出
command &> all.log # 重定向所有输出
5. 流程控制
5.1 条件判断
if [ "$1" -eq 10 ]; then
echo "参数等于10"
elif [ "$1" -lt 5 ]; then
echo "参数小于5"
else
echo "其他情况"
fi
- 常用测试符:
- 数值:
-eq(等于)、-gt(大于)、-le(小于等于)。 - 字符串:
=,!=,-z(空字符串)。 - 文件:
-f(存在且为文件)、-d(存在且为目录)。
5.2 循环
# for 循环
for i in {1..5}; do
echo "数字: $i"
done
# while 循环
count=1
while [ $count -le 3 ]; do
echo "计数: $count"
((count++))
done
6. 函数
greet() {
local name="$1" # local 定义局部变量
echo "Hello, $name"
}
greet "Alice" # 调用函数并传参
7. 常用工具与技巧
7.1 命令替换
current_date=$(date) # 或 `date`
echo "现在时间是: $current_date"
7.2 算术运算
sum=$((3 + 5)) # 使用 $(( ))
echo "3 + 5 = $sum"
7.3 调试脚本
bash -x script.sh # 打印每条执行的命令
set -e # 脚本中设置:遇到错误立即退出
8. 实际示例
备份目录
#!/bin/bash
backup_dir="/tmp/backup_$(date +%Y%m%d)"
mkdir -p "$backup_dir"
cp -r /path/to/source/* "$backup_dir"
echo "备份完成: $backup_dir"
定时任务(Cron)
crontab -e
# 每天凌晨3点执行脚本
0 3 * * * /path/to/script.sh
9. 注意事项
- 变量引用:始终用双引号包裹变量(如
"$var"),避免空格或特殊字符导致的问题。 - 权限管理:敏感操作(如删除文件)需确认权限。
- 跨平台兼容性:不同 Shell(Bash、Zsh、Dash)语法可能有差异,建议明确指定
#!/bin/bash。
通过以上内容,你可以快速掌握 Shell 脚本的基础和进阶用法。实践是学习的关键,建议从简单任务开始逐步尝试复杂脚本!
© 版权声明
文中内容均来源于公开资料,受限于信息的时效性和复杂性,可能存在误差或遗漏。我们已尽力确保内容的准确性,但对于因信息变更或错误导致的任何后果,本站不承担任何责任。如需引用本文内容,请注明出处并尊重原作者的版权。
THE END

























暂无评论内容