Skip to content

Bash 脚本编程

1. 基本结构

一个基本的 Bash 脚本 #!/bin/bash 开头,告诉系统使用 Bash 来执行该脚本。

bash
#!/bin/bash

# 这是注释,不会被执行
echo "Hello,World!"

2. 脚本执行

要执行 Bash 脚本,需要给它执行权限,然后直接运行它

bash
chmod +x my_script.sh
./my_script.sh

3. 基本语法

  • 命令和管道 在 Bash 中,命令是执行任务的基本单元。命令之间可以通过管道(|)连接,使一个命令的输出成为另一个命令的输出。
bash
# 命令示例
ls -l
# 管道示例,列出当前目录下的文件,并通过grep搜索包含.txt的行
ls -l | grep ".txt"
  • 变量
bash
# 定义变量
my_name="Hello"

# 使用变量
echo $my_name

# 使用带有引号的变量
echo "${my_name} World"
echo "${my_variable^^}" # 将变量转换为大写 V4.0以后版本支持
echo "${my_variable,,}" # 将变量转换为小写 V4.0以后版本支持
  • 条件语句
bash
# if语句示例
if [ $my_name = "Hello" ]; then
    echo "name is 'Hello'"
else
    echo "name is not 'Hello'"
fi
  • 循环
bash
# for循环示例
for i in {1...5}; do
    echo "Loop iteration: $i"
done

# while循环示例
count=1
while [ $count - le 5]; do
    echo "Count is: $count"
    ((count++))
done
  • 函数
bash
# 使用function关键字
function my_function {
    echo "This is a function"
}

# 使用简单的命名约定
my_function() {
    echo "$0 是这个函数本身"
    echo "The first arguments is $1"
    echo "The second arguments is $2"
}

# 调用函数
my_function "hello" "world"
  • 函数返回值 函数可以使用 return 命令返回一个值。
bash
# 定义返回值的函数
my_function() {
    local my_value="Some value"
    return $((42))
}

# 调用函数并获取返回值
my_function
echo "Return value: $?"

这里,$?将包含有 my_function 函数返回的退出状态码。

4. 用户交互

  • 读取输入

    在脚本中,可以使用 read 命令从用户那里读取输入

bash
# 读取用户输入
read -p "Enter your name: " name
echo "Hello, $name!"

5.模块化脚本

创建模块文件 my_module.sh

bash
function my_function {
    echo "This function is in a module"
}

在主脚本中使用模块 main_script.sh

bash
# main_script.sh
source my_module.sh

# 现在可以调用模块中的函数
my_function

6.脚本优化

  • 简化命令
bash
# 不必要的命令
ls -l
grep "txt"

# 优化后的命令
ls -l grep "txt"
  • 使用别名和函数
bash
# 创建别名
alias ll='ls -l'

# 创建函数
function list_files() {
    ls -l $1
}

# 使用别名和函数
ll
list_files /path/to/directory

基于 MIT 许可发布