了解 Bash 基础是编写 Shell 脚本的第一步。以下是 Bash 脚本中的一些基本概念和用法:
1. 变量
Bash 中的变量不需要声明类型,使用简单赋值就可以创建变量。
- 定义变量:
变量名=值
,等号两边不能有空格。name="Alice" age=25
- 引用变量:使用
$
引用变量值。echo $name # 输出 Alice echo $age # 输出 25
2. 字符串
- 双引号
"
:支持变量替换,即可以解析变量。echo "Hello, $name" # 输出 Hello, Alice
- 单引号
'
:单引号不会解析变量,内容将被原样输出。echo 'Hello, $name' # 输出 Hello, $name
- 拼接字符串:可以直接用
"$var"
的方式拼接。greeting="Hello, ${name}!" echo $greeting # 输出 Hello, Alice!
3. 数字运算
Bash 中默认不支持浮点数,只支持整数运算,可以使用 $((表达式))
。
num1=10
num2=5
sum=$((num1 + num2)) # sum = 15
echo $sum
4. 条件判断
条件判断通常用 if
语句结合 [
表达式 ]
完成。
比较运算符
整数比较:
-eq
(等于)、-ne
(不等于)、-gt
(大于)、-lt
(小于)、-ge
(大于等于)、-le
(小于等于)。if [ $age -gt 18 ]; then echo "You are an adult." else echo "You are a minor." fi
字符串比较:
=
(等于)、!=
(不等于)、-z
(字符串长度为 0)、-n
(字符串长度不为 0)。if [ "$name" = "Alice" ]; then echo "Hello, Alice!" else echo "Hello, stranger!" fi
文件测试
-e
:文件存在。-f
:存在且为文件。-d
:存在且为目录。if [ -f "test.txt" ]; then echo "File exists." fi
5. 循环
Bash 支持 for
和 while
循环来遍历数据和执行重复操作。
- for 循环:遍历列表。
for i in 1 2 3 4 5; do echo "Number: $i" done
- while 循环:循环条件满足时执行。
count=1 while [ $count -le 5 ]; do echo "Count: $count" count=$((count + 1)) done
6. 函数
Bash 支持函数定义,便于组织和复用代码。
# 定义函数
greet() {
echo "Hello, $1!"
}
# 调用函数
greet "Alice" # 输出 Hello, Alice!
7. 输入输出与管道
- 读取用户输入:
read
命令。echo "Enter your name:" read name echo "Hello, $name!"
- 管道:用
|
将一个命令的输出作为另一个命令的输入。ls | grep "file" # 查找包含 "file" 的文件
- 重定向:
>
用于输出重定向(覆盖文件),>>
用于追加内容。echo "Hello" > file.txt # 将 Hello 写入 file.txt echo "World" >> file.txt # 追加写入 World
8. 脚本执行
编写好脚本后,可以使用以下两种方式运行:
直接运行: 先给脚本文件添加执行权限:
chmod +x script.sh
然后运行脚本:
./script.sh
通过解释器运行:
bash script.sh
9. 示例:创建简单备份脚本
以下是一个备份目录内容的简单脚本:
#!/bin/bash
# 定义备份目录
backup_dir="/backup"
date=$(date +%Y%m%d)
target_dir="${backup_dir}/backup-${date}"
# 创建备份目录
mkdir -p "$target_dir"
# 拷贝数据到备份目录
cp -r /path/to/data "$target_dir"
echo "备份完成:$target_dir"
Bash 是一种灵活的语言,学习基础可以让你高效完成自动化任务,继续深入学习可以掌握更高级的脚本编写技巧。