Appearance
Hello World
创建第一个 Shell 脚本
基本步骤
- 创建脚本文件
- 编写脚本内容
- 添加执行权限
- 运行脚本
创建脚本
bash
# 创建脚本文件
touch hello.sh
# 使用编辑器打开
vim hello.sh编写脚本内容
bash
#!/bin/bash
echo "Hello, World!"说明:
#!/bin/bash- 称为 shebang,指定脚本解释器echo- 输出命令"Hello, World!"- 要输出的文本
Shebang 详解
什么是 Shebang
Shebang(也称为 hashbang)是一个特殊的第一行,用于指定脚本的解释器。
bash
#!/bin/bash常见的 Shebang
bash
#!/bin/bash # 使用 Bash 解释器
#!/bin/sh # 使用系统默认 Shell
#!/usr/bin/env bash # 使用环境中的 Bash
#!/bin/zsh # 使用 Zsh
#!/usr/bin/python # 使用 Python
#!/usr/bin/perl # 使用 PerlShebang 的作用
- 告诉系统使用哪个解释器执行脚本
- 确保脚本在不同系统上正确执行
- 提供脚本的可移植性
推荐写法
bash
#!/usr/bin/env bash优点:
- 更好的可移植性
- 自动查找系统中的 Bash
- 适用于不同的安装路径
运行脚本的方式
方式一:使用 bash 命令
bash
bash hello.sh特点:
- 不需要执行权限
- 指定解释器运行
- 适合测试脚本
方式二:使用 sh 命令
bash
sh hello.sh特点:
- 使用系统默认 Shell
- 可能不是 Bash
- 兼容性更好
方式三:添加执行权限后直接运行
bash
# 添加执行权限
chmod +x hello.sh
# 运行脚本
./hello.sh特点:
- 需要执行权限
- 使用 shebang 指定的解释器
- 最常用的方式
方式四:使用 source 或 . 命令
bash
source hello.sh
# 或
. hello.sh特点:
- 在当前 Shell 中执行
- 脚本中的变量会影响当前 Shell
- 不会创建子 Shell
完整示例
创建并运行脚本
bash
# 1. 创建脚本文件
cat > hello.sh << 'EOF'
#!/bin/bash
echo "Hello, World!"
echo "当前用户: $USER"
echo "当前目录: $(pwd)"
echo "当前时间: $(date)"
EOF
# 2. 查看脚本内容
cat hello.sh
# 3. 添加执行权限
chmod +x hello.sh
# 4. 运行脚本
./hello.sh
# 5. 使用 bash 运行
bash hello.sh
# 6. 使用 source 运行
source hello.sh脚本注释
单行注释
bash
#!/bin/bash
# 这是一个注释
echo "Hello, World!" # 这也是注释
# 打印当前用户
echo "当前用户: $USER"多行注释
bash
#!/bin/bash
: << 'COMMENT'
这是一个多行注释
可以写多行内容
COMMENT
echo "Hello, World!"注释的作用
- 解释代码功能
- 提供使用说明
- 标记待办事项
- 临时禁用代码
脚本最佳实践
1. 使用有意义的文件名
bash
# 好的文件名
backup.sh
deploy.sh
check_logs.sh
# 不好的文件名
test.sh
script.sh
a.sh2. 添加脚本说明
bash
#!/bin/bash
# 脚本名称: hello.sh
# 功能描述: 打印欢迎信息
# 作者: Your Name
# 创建日期: 2024-01-01
# 版本: 1.0
echo "Hello, World!"3. 使用错误处理
bash
#!/bin/bash
set -e # 遇到错误立即退出
echo "开始执行..."
# 可能失败的命令
some_command
echo "执行完成!"4. 添加退出码
bash
#!/bin/bash
echo "Hello, World!"
# 成功退出
exit 0
# 失败退出
# exit 1实用示例
示例1:问候程序
bash
#!/bin/bash
echo "=================================="
echo " 欢迎使用 Shell 脚本"
echo "=================================="
echo ""
echo "当前用户: $USER"
echo "当前目录: $(pwd)"
echo "当前时间: $(date '+%Y-%m-%d %H:%M:%S')"
echo ""
echo "=================================="
echo " 祝你学习愉快!"
echo "=================================="示例2:系统信息
bash
#!/bin/bash
echo "=== 系统信息 ==="
echo "操作系统: $(uname -s)"
echo "主机名: $(hostname)"
echo "内核版本: $(uname -r)"
echo "架构: $(uname -m)"
echo ""
echo "=== 用户信息 ==="
echo "当前用户: $USER"
echo "用户 ID: $(id -u)"
echo "主目录: $HOME"
echo "Shell: $SHELL"示例3:交互式脚本
bash
#!/bin/bash
echo "请输入你的名字:"
read name
echo "你好, $name!"
echo "欢迎学习 Shell 脚本!"调试脚本
使用 -x 选项
bash
# 调试模式运行
bash -x hello.sh
# 在脚本中启用调试
#!/bin/bash -x
echo "Hello, World!"使用 -v 选项
bash
# 详细模式运行
bash -v hello.sh使用 -n 选项
bash
# 检查语法但不执行
bash -n hello.sh常见错误
错误1:权限被拒绝
bash
$ ./hello.sh
bash: ./hello.sh: Permission denied
# 解决方法:添加执行权限
chmod +x hello.sh错误2:找不到命令
bash
$ ./hello.sh
bash: ./hello.sh: /bin/bash: bad interpreter: No such file or directory
# 解决方法:检查 shebang 路径
which bash错误3:行尾符问题
bash
# Windows 的行尾符可能导致问题
# 解决方法:转换为 Unix 格式
dos2unix hello.sh
# 或
sed -i 's/\r$//' hello.sh总结
创建和运行 Shell 脚本的基本步骤:
- 创建脚本文件
- 添加 shebang
- 编写脚本内容
- 添加执行权限
- 运行脚本
记住这些基本概念,你就可以开始编写自己的 Shell 脚本了!
下一节我们将学习 Shell 变量的使用。