Skip to content

Linux Shell 脚本编写教程

Shell 脚本是 Linux/Unix 系统中非常强大的工具,它允许你将一系列命令组合成一个可执行文件,实现自动化任务、系统管理、部署等功能。本教程将带你从基础开始学习如何编写 Shell 脚本。


1. 什么是 Shell 脚本?

Shell 脚本是一种解释型语言,它使用 Shell(如 Bash、Zsh 等)作为解释器来执行命令。简单来说,它就是把你在终端中手动输入的命令按顺序写到一个文件中,然后让 Shell 自动执行。


2. 第一个 Shell 脚本:Hello World

2.1 创建脚本文件

使用任何文本编辑器创建一个新文件,例如 hello.sh

bash
touch hello.sh

2.2 编写脚本内容

编辑 hello.sh,添加以下内容:

bash
#!/bin/bash
# 这是一个简单的 Shell 脚本

echo "Hello, World!"
  • #!/bin/bash:这被称为 Shebang (或 Hashbang)。它告诉系统应该使用哪个解释器来执行这个脚本。在这里,我们指定使用 /bin/bash
  • # 这是一个简单的 Shell 脚本:以 # 开头的行是注释,Shell 会忽略它们。
  • echo "Hello, World!"echo 命令用于在终端输出文本。

2.3 赋予执行权限

默认情况下,新创建的文件没有执行权限。你需要使用 chmod 命令来添加执行权限:

bash
chmod +x hello.sh

2.4 运行脚本

现在你可以运行你的第一个 Shell 脚本了:

bash
./hello.sh

输出:

Hello, World!

3. 变量

Shell 脚本中可以定义和使用变量来存储数据。

3.1 定义变量

bash
name="Alice"
age=30

# 注意:变量名和等号之间不能有空格

3.2 使用变量

使用 $ 符号来引用变量的值:

bash
#!/bin/bash

name="Bob"
echo "My name is $name."
echo "My name is ${name}." # 推荐使用大括号,避免歧义

输出:

My name is Bob.
My name is Bob.

4. 用户输入

使用 read 命令获取用户的输入。

bash
#!/bin/bash

echo "请输入你的名字:"
read username
echo "你好, $username!"

5. 条件判断 (if/else)

使用 ifelifelsefi 来进行条件判断。

bash
#!/bin/bash

num=10

if [ $num -gt 5 ]; then
  echo "$num 大于 5"
elif [ $num -eq 5 ]; then
  echo "$num 等于 5"
else
  echo "$num 小于 5"
fi

常用的条件判断符号:

  • -eq:等于
  • -ne:不等于
  • -gt:大于
  • -ge:大于等于
  • -lt:小于
  • -le:小于等于
  • -z:字符串为空
  • -n:字符串不为空
  • ==:字符串相等
  • !=:字符串不相等

6. 循环 (for/while)

6.1 for 循环

bash
#!/bin/bash

for i in 1 2 3 4 5; do
  echo "当前数字是: $i"
done

# 遍历文件列表
for file in *.sh; do
  echo "找到脚本文件: $file"
done

6.2 while 循环

bash
#!/bin/bash

count=1
while [ $count -le 5 ]; do
  echo "计数: $count"
  count=$((count + 1)) # 算术运算
done

7. 函数

将重复的代码块封装成函数。

bash
#!/bin/bash

# 定义函数
greet() {
  echo "你好, $1!" # $1 表示函数的第一个参数
}

# 调用函数
greet "World"
greet "Shell Script"

8. 脚本调试

在运行脚本时,可以使用 -x 选项来开启调试模式,查看脚本的执行过程。

bash
bash -x your_script.sh

9. 最佳实践

  • 添加 Shebang:始终在脚本开头添加 #!/bin/bash (或你使用的 Shell)。
  • 添加注释:解释脚本的功能、复杂逻辑和重要步骤。
  • 使用有意义的变量名:提高代码可读性。
  • 检查退出状态:使用 $? 检查上一个命令的退出状态,0 表示成功,非 0 表示失败。
  • 错误处理:使用 set -e 在命令失败时立即退出脚本。
  • 引用变量:使用双引号 "$variable" 来引用变量,以避免空格或特殊字符引起的问题。
  • 保持简洁:一个脚本只做一件事,并把它做好。

通过本教程,你已经掌握了 Shell 脚本编写的基础知识。现在你可以尝试编写自己的脚本来自动化日常任务了!