Administrator
Administrator
发布于 2024-10-29 / 9 阅读
0
0

Bash入门

了解 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 支持 forwhile 循环来遍历数据和执行重复操作。

  • 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. 脚本执行

编写好脚本后,可以使用以下两种方式运行:

  1. 直接运行: 先给脚本文件添加执行权限:

    chmod +x script.sh
    

    然后运行脚本:

    ./script.sh
    
  2. 通过解释器运行

    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 是一种灵活的语言,学习基础可以让你高效完成自动化任务,继续深入学习可以掌握更高级的脚本编写技巧。


评论