介绍bash脚本: 语法, 变量, 命令
1. 什么是Bash脚本?
如果你曾经想过:“为什么我要一遍又一遍地重复这些命令?”,恭喜你,你已经准备好学习Bash脚本了!Bash脚本是一种通过编写命令序列到一个文件中来在Linux中自动化工作的方式。Bash (Bourne Again Shell) 不仅仅是一个shell,它是管理员、程序员和所有想让系统为自己工作的人的瑞士军刀。
Bash脚本的优势
- 节省时间: 写一次,运行八次。
- 任务的可重复性: 每次运行脚本结果都一样(当然,如果你写得没问题的话)。
- 自动化日常工作: 创建用于备份、资源监控或文件管理的自定义命令。
2. 编写脚本的基础
好了,我们开始吧。Bash脚本就是一个包含命令集合的纯文本文件。但是为了让Linux明白这是脚本,而不是你随手写的日记,我们必须遵循一些规则。
步骤1:文件的名称和格式
Bash脚本通常使用后缀 .sh
(但这不是必须的)。例如:
hello_world.sh
backup_script.sh
步骤2:必要的头部
每个bash脚本都以以下这行开头:
#!/bin/bash
这行叫做shebang,它告诉系统执行脚本时需要用到的解释器是 /bin/bash
。没有这个,系统只会看着你的脚本,叹口气然后什么都不做。
步骤3:最简单的脚本
我们来创建并运行一个脚本,它会输出"你好,世界!"的文字。为什么不呢?
创建文件:
nano hello_world.sh
添加以下内容:
#!/bin/bash echo "你好,世界!"
将文件设为可执行:
chmod +x hello_world.sh
运行脚本:
./hello_world.sh
屏幕上你会看到:
你好,世界!
3. 使用变量
变量是脚本里用来存储数据的工具,它们让脚本更灵活且易于使用。
创建变量
要声明一个变量,使用以下格式:
变量名="值"
示例:
NAME="Linux"
echo "欢迎来到 $NAME!"
输出:
欢迎来到 Linux!
注意:变量名和等号之间不能有空格。如果有空格,bash会认为你写了个奇怪的东西,然后报错。
内置变量
Bash提供了一些预定义变量,比如:
$USER
— 当前用户。$HOME
— 主目录。$PWD
— 当前工作目录。
试试看下面这个脚本:
#!/bin/bash
echo "你好, $USER!"
echo "你的主目录是: $HOME"
echo "你现在工作在: $PWD"
4. 从用户获取数据
有时候脚本需要从用户那里获取数据才能运行。为此可以使用read
命令。
例子:
#!/bin/bash
echo "你叫什么名字?"
read NAME
echo "你好, $NAME!"
运行脚本时,你可以输入自己的名字,然后脚本会个性化地向你打招呼。
5. 在脚本中使用命令
Bash允许你像在终端中输入命令一样在脚本中执行这些命令。
例如:
#!/bin/bash
echo "当前日期和时间:"
date
命令 date
会显示当前时间和日期,例如:
当前日期和时间:
Mon Oct 30 12:34:56 UTC 2023
将命令的结果保存到变量中
你可以使用 $()
将命令的输出保存到变量里。这对于进一步处理数据非常有用。
例如:
#!/bin/bash
CURRENT_DATE=$(date)
echo "现在是: $CURRENT_DATE"
6. 脚本中的注释
总是添加注释,这样一个月后你才能搞懂自己写的代码。使用符号 #
来添加注释:
#!/bin/bash
# 这是欢迎脚本
echo "欢迎来到Bash的世界!"
注释会被解释器忽略,不影响脚本的执行。
7. 示例
现在我们写一个脚本,检查文件是否存在。
创建文件:
nano file_checker.sh
添加代码:
#!/bin/bash # 请求文件名 echo "请输入文件名:" read FILE_NAME # 检查文件是否存在 if [ -f "$FILE_NAME" ]; then echo "文件 $FILE_NAME 存在。" else echo "文件 $FILE_NAME 未找到。" fi
将文件设为可执行并运行:
chmod +x file_checker.sh ./file_checker.sh
脚本工作示例:
请输入文件名: test.txt 文件 test.txt 存在。
8. 常见错误
写bash脚本不仅能带来乐趣,有时候也能让人挠破头。以下是几个常见错误:
忘记写shebang。
如果没有写#!/bin/bash
,你的脚本可能会试图用其他的解释器运行,从而导致错误。未声明的变量。
如果你不小心在变量名上拼写错误,bash会将其视为空。用set -u
开启严格模式可以避免这种问题。=
周围的空格。
永远不要这样写:VARIABLE = "value"
。这会导致错误。权限问题。
如果脚本没有执行权限,用chmod +x
添加权限。
实践任务
写一个脚本,要求如下:
- 询问用户名。
- 输出问候语。
- 显示当前日期和时间。
写一个脚本,要求如下:
- 询问用户文件名。
- 如果文件不存在则创建文件,否则提示文件已存在。
现在你已经掌握了bash脚本的基础内容!接下来需要学习的是如何添加条件语句和循环,这会在下一次讲座中讲到。加油,走向自动化世界!
GO TO FULL VERSION