Skip to content

Hello World

创建第一个 Shell 脚本

基本步骤

  1. 创建脚本文件
  2. 编写脚本内容
  3. 添加执行权限
  4. 运行脚本

创建脚本

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    # 使用 Perl

Shebang 的作用

  • 告诉系统使用哪个解释器执行脚本
  • 确保脚本在不同系统上正确执行
  • 提供脚本的可移植性

推荐写法

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.sh

2. 添加脚本说明

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 脚本的基本步骤:

  1. 创建脚本文件
  2. 添加 shebang
  3. 编写脚本内容
  4. 添加执行权限
  5. 运行脚本

记住这些基本概念,你就可以开始编写自己的 Shell 脚本了!

下一节我们将学习 Shell 变量的使用。