跳到主要内容

Linux 第一个 Shell 脚本

这一篇我们写一个最小可用的 Shell 脚本。你会学到脚本文件、执行权限、运行方式和基本输出。

创建脚本文件

进入练习目录:

mkdir -p ~/linux-practice/shell-demo
cd ~/linux-practice/shell-demo

创建文件:

vim hello.sh

写入内容:

#!/usr/bin/env bash

echo "Hello, Linux"
echo "Current user: $(whoami)"
echo "Current directory: $(pwd)"

保存退出。

如果你还不熟悉 Vim,可以先阅读 Vim 文本编辑器

运行脚本

第一种方式是直接交给 Bash:

bash hello.sh

预期输出类似:

Hello, Linux
Current user: rudy
Current directory: /home/rudy/linux-practice/shell-demo

第二种方式是先添加执行权限:

chmod u+x hello.sh

然后运行:

./hello.sh

这里的 ./ 表示当前目录。默认情况下,Shell 不会自动到当前目录查找命令,所以需要明确写出来。

为什么需要执行权限

脚本也是文件。如果你想把它当作程序运行,就需要执行权限。

查看权限:

ls -l hello.sh

你应该看到类似:

-rwxr--r-- 1 rudy rudy 95 Jul 24 10:00 hello.sh

所有者权限中的 x 表示可以执行。

添加注释

Shell 脚本中的注释以 # 开头:

# Print current user
echo "Current user: $(whoami)"

第一行的 #! 是特殊的 shebang,不是普通注释。

使用变量

改写脚本:

#!/usr/bin/env bash

name="Linux"
echo "Hello, $name"

变量赋值时等号两边不要加空格。下面写法是错误的:

name = "Linux"

接收输入

可以使用 read 从键盘读取:

#!/usr/bin/env bash

read -r -p "Your name: " name
echo "Hello, $name"

-r 可以避免反斜杠被特殊处理,写脚本时通常建议加上。

常见错误

Permission denied

如果运行:

./hello.sh

提示权限不足,执行:

chmod u+x hello.sh

command not found

如果你输入:

hello.sh

提示找不到命令,改成:

./hello.sh

或把脚本所在目录加入 PATH。入门阶段先用 ./脚本名

小结

你已经完成第一个 Shell 脚本:

  • .sh 文件保存命令。
  • 用 shebang 指定解释器。
  • chmod u+x 添加执行权限。
  • ./hello.sh 运行当前目录脚本。
  • echo 输出,用 read 接收输入。

后面会继续介绍参数、退出状态和基本流程控制。