首页 / Linux 命令行入门教程 / 81. 脚本基础:shebang / 执行 / 注释 / 变量 / 引号

Linux 命令行入门教程

81. 脚本基础:shebang / 执行 / 注释 / 变量 / 引号

本教程共 90 篇 · 第 81 篇

81. 脚本基础:shebang / 执行 / 注释 / 变量 / 引号

脚本就是一份命令清单。把你要敲的命令按行写进一个文本文件,让 Shell 一次性替你执行。重复的事交给脚本,你只管喝茶。

本教程从这一章起连续讲 bash 脚本。bash 是 Ubuntu 26.04 默认的 Shell(如 §75 所述),例子都以它为准。

第一行:shebang

脚本第一行的 #! 叫 shebang,它告诉系统”用谁来解释这份文件”。写 bash 脚本就放这一行:

#!/bin/bash
echo "你好,脚本"

#! 后面跟解释器的绝对路径。想更通用可以写成 #!/usr/bin/env bash,它会按 PATH 去找 bash。

两种执行方式

方式一,直接用解释器跑,不需要执行权限:

bash hello.sh

方式二,先给文件加执行权限,再像命令一样跑:

chmod +x hello.sh
./hello.sh

chmod +x 的意思如 §41 所述,是给文件加上”可执行”权限位。./ 表示”在当前目录找这个文件”。

Warning

.sh 文件 chmod +x 并运行前,先确认脚本内容是你写的、或你信任的来源。网上下载的脚本直接加权限运行,可能删库跑路。看不懂就别跑。

注释

# 开头的内容是注释,Shell 会忽略它。注释是写给人看的,讲清”为什么这么写”:

#!/bin/bash
# 这是注释,不会被执行
echo "这行会被执行"

变量

变量存一段数据。赋值号两边不要留空格,这点 bash 很挑剔:

name="小明"      # 定义变量
echo "$name"     # 引用变量,打印:小明
readonly age=18  # 只读变量,不能再改

变量名区分大小写,NAMEname 是两个东西。想删掉一个变量用 unset name

环境变量(如 §76 所述)要用 export 导出才能传给子进程。脚本里普通变量默认只在当前脚本内有效。

引号的区别

双引号里变量会被展开,单引号里原样输出:

echo "家目录:$HOME"   # 变量被替换成实际路径
echo '家目录:$HOME'   # 原样打印 $HOME 四个字符

引用变量时请养成加双引号的习惯。否则文件名里带空格会被拆成多个词:

file="我的 文档.txt"
cat $file     # 被拆成「我的」和「文档.txt」两个参数
cat "$file"   # 正确,当作一个文件

小结:脚本 = 命令清单 + shebang。变量引用加引号防分词,chmod +x 前先看清楚内容。