Shell语言基础语法(3)

目录

简介

一、流程控制

[1、if 语句](#1、if 语句)

[2、case 选择](#2、case 选择)

[3、while 循环](#3、while 循环)

[4、for 循环](#4、for 循环)

5、扩展使用select

二、函数

1、函数的定义

2、函数的调用

3、函数的传参

4、函数的返回值

5、局部变量

6、全局变量

总结


简介

Shell 脚本是一种强大的工具,广泛用于 Linux 系统中的自动化任务和脚本编写。本文将详细介绍 Shell 语言的基础知识,包括流程控制(if 语句、case 选择、while 循环、for 循环、select 扩展)和函数(定义、调用、传参、返回值、局部变量、全局变量)。

一、流程控制

流程控制是编程语言的核心部分,用于控制程序的执行流程。Shell 提供了多种流程控制结构,包括条件判断和循环。

1、if 语句

if 语句用于根据条件执行不同的代码块。Shell 中的 if 语句有以下几种形式:

bash 复制代码
if 条件; then
    命令1
elif 条件; then
    命令2
else
    命令3
fi
  • if :如果条件为真,执行 then 后的命令。

  • elif:如果前面的条件为假,检查下一个条件。

  • else :如果所有条件都为假,执行 else 后的命令。

  • fi :结束 if 语句。

常用条件表达式

表达式 描述
-eq 等于
-ne 不等于
-gt 大于
-lt 小于
-ge 大于等于
-le 小于等于
-z 字符串为空
-n 字符串非空
-d 文件 文件是目录
-f 文件 文件是普通文件

2、case 选择

case 语句用于多条件选择,适合处理多个可能的值。

bash 复制代码
case 变量 in
    模式1)
        命令1
        ;;
    模式2)
        命令2
        ;;
    *)
        默认命令
        ;;
esac
  • case :开始 case 语句。

  • 模式 :可以是字符串、通配符(如 *)或正则表达式。

  • ;;:结束一个分支。

  • *) :默认分支,类似于 else

  • esac :结束 case 语句。

3、while 循环

while 循环用于在条件为真时重复执行代码块。

bash 复制代码
while 条件; do
    命令
done
  • while :开始 while 循环。

  • 条件:循环继续的条件。

  • do:开始循环体。

  • done:结束循环体。

4、for 循环

for 循环用于遍历列表或范围,执行代码块。

bash 复制代码
for 变量 in 列表; do
    命令
done
  • for :开始 for 循环。

  • 变量:当前迭代的元素。

  • 列表:可以是字符串、数组或范围。

  • do:开始循环体。

  • done:结束循环体。

范围循环

bash 复制代码
for i in {1..5}; do
    echo "数字: $i"
done

5、扩展使用select

select 语句用于创建一个简单的菜单,用户可以选择一个选项。

bash 复制代码
select 变量名 in 选项列表
do
    # 根据用户的选择执行相应的操作
    case $变量名 in
        选项1) 命令1 ;;
        选项2) 命令2 ;;
        *) 默认命令 ;;
    esac
    break  # 通常需要 break,否则会循环显示菜单
done
  • select :开始 select 语句。

  • 变量:用户选择的选项。

  • 选项列表:显示给用户的选项。

  • break :结束 select 循环

举例

bash 复制代码
#!/bin/bash

echo "请选择一个水果:"
select fruit in "苹果" "香蕉" "橙子" "退出"
do
    case $fruit in
        "苹果")
            echo "你选择了苹果。"
            ;;
        "香蕉")
            echo "你选择了香蕉。"
            ;;
        "橙子")
            echo "你选择了橙子。"
            ;;
        "退出")
            echo "退出菜单。"
            break
            ;;
        *)
            echo "无效的选择,请重新选择。"
            ;;
    esac
done
bash 复制代码
请选择一个水果:
1) 苹果
2) 香蕉
3) 橙子
4) 退出
#? 2
你选择了香蕉。
#? 4
退出菜单。

二、函数

函数是代码的封装,用于实现代码的复用和模块化。Shell 脚本中的函数与其他编程语言类似,但有一些特殊的语法和规则。

1、函数的定义

bash 复制代码
函数名() {
    命令
}
  • 函数名:函数的名称。

  • ():定义函数的参数列表(可以为空)。

  • {}:函数体。

2、函数的调用

调用函数时,直接使用函数名即可。

bash 复制代码
greet "World"  # 输出: Hello, World!

3、函数的传参

函数可以接受参数,参数通过 $1, $2, $3, ... 访问

bash 复制代码
#!/bin/bash

add() {
    echo $(($1 + $2))
}

result=$(add 3 5)
echo "结果: $result"  # 输出: 结果: 8

4、函数的返回值

函数可以通过 return 返回一个整数值,返回值通过 $? 获取。

bash 复制代码
#!/bin/bash

check_file() {
    if [ -f $1 ]; then
        return 0
    else
        return 1
    fi
}

check_file "myfile.txt"
if [ $? -eq 0 ]; then
    echo "文件存在"
else
    echo "文件不存在"
fi

5、局部变量

函数内部可以使用 local 关键字定义局部变量,局部变量只在函数内部有效。

bash 复制代码
#!/bin/bash

test_local() {
    local var="局部变量"
    echo $var
}

test_local  # 输出: 局部变量
echo $var   # 输出为空,因为 var 是局部变量

6、全局变量

全局变量在函数内外都有效,可以在函数中修改全局变量的值。

bash 复制代码
#!/bin/bash

var="全局变量"

test_global() {
    var="修改后的全局变量"
}

test_global
echo $var  # 输出: 修改后的全局变量

总结

本文详细介绍了 Shell 语言的基础知识,包括流程控制(if 语句、case 选择、while 循环、for 循环、select 扩展)和函数(定义、调用、传参、返回值、局部变量、全局变量)。掌握这些知识后,您可以编写更复杂和高效的 Shell 脚本,实现自动化任务和系统管理。

相关推荐
fiveym2 分钟前
持续交付与持续部署(CD)深度解析:定义差异、流程架构与交付模式对比
运维·ci/cd·架构
PascalMing4 分钟前
ubuntu 24.04安装dotnet 10日志
linux·运维·ubuntu·dotnet10
optimistic_chen9 分钟前
【Docker入门】容器技术
linux·运维·服务器·docker·容器
Lueeee.11 分钟前
2.智梯云枢・全维管控广告系统——解决串口卡顿 + 优化稳定性
linux·运维·服务器
南行*11 分钟前
C语言Linux环境编程
linux·c语言·开发语言·网络安全
海清河晏11112 分钟前
Linux进阶篇:HTTP协议
linux·运维·http
June`14 分钟前
IO模型全解析:从阻塞到异步(高并发的reactor模型)
linux·服务器·网络·c++
ASS-ASH20 分钟前
快速处理虚拟机磁盘扩容问题
linux·数据库·vmware·虚拟机·磁盘扩容
AI_567820 分钟前
零基础学Linux:21天从“命令小白”到独立部署服务器
linux·服务器·人工智能·github
江湖有缘22 分钟前
Fenrus + Docker 实战:构建简洁高效的浏览器新标签页
运维·docker·容器