linRichielinRichie
前端
Python
Linux
ChatGPT
  • B 站
  • 500px
前端
Python
Linux
ChatGPT
  • B 站
  • 500px
  • Ansible

    • Ansible: 基本操作
    • Ansible: 安装
    • Ansible: 简介
    • YAML: 文件格式
    • Playbook

      • Playbook: 介绍
      • Playbook: 操作
    • 模块

      • Yum模块常用参数
    • 实战

      • Ansible 实战
  • Anaconda

    • Anaconda命令
  • Iptables

    • Iptable: 防火墙
    • iptables 用法
  • Systemd

    • 系统服务配置
    • 系统服务启动文件
    • 性能优化

      • Linux 系统监控
      • Linux 系统性能优化
      • Linux 系统故障诊断
      • Linux 系统日志管理
  • Network

    • 用一张图解释 8 种流行的网络协议
    • 反子网掩码
    • 交换机端口模式
    • eNSP 软件
    • 华为交换机配置命令
    • eNSP静态路由实验
  • Commands

    • 命令别名:alias
    • 多类型资源统计工具: dstat
    • history配置
    • unzip命令
    • Linux用户到期登录时间和随机密码
    • 常用 Command
    • ssh

      • ssh-keygen
      • linux ssh命令
  • CI/CD

    • Jenkins CI/CD 管道
  • Kubernetes

    • Docker系列学习

      • 01. 什么是Docker
      • 02. Docker安装
      • 03. 使用Docker镜像
      • 04. 利用commit理解镜像构成
      • 05. 操作Docker容器
      • 06. 使用Dockerfile定制镜像
      • 07. Dockerfile指令详解
      • 08. Dockerfile多阶段创建
      • 09. 访问仓库
      • 10. 修改docker的启动项
      • 11. Nexus3.x的私有仓库
      • 12. docker-hub加速器
      • 13. 数据管理
      • 14. 使用网络
  • Shell编程

    • Shell 编程基础
    • Shell 脚本执行消耗的时间
    • Shell 自动生成简介

Shell 编程基础

  • 1. Shell 基础
    • 1.1 Shell 类型
    • 1.2 脚本结构
  • 2. 变量和参数
    • 2.1 变量操作
    • 2.2 特殊变量
  • 3. 流程控制
    • 3.1 条件判断
    • 3.2 循环
  • 4. 函数
    • 4.1 函数定义
    • 4.2 函数调用
  • 5. 文件操作
    • 5.1 文件读写
    • 5.2 文件状态测试
  • 6. 字符串处理
    • 6.1 字符串操作
    • 6.2 正则表达式
  • 7. 调试技巧
    • 7.1 调试选项
    • 7.2 错误处理

1. Shell 基础

1.1 Shell 类型

Shell 是用户与 Linux 系统交互的接口。Linux 支持多种 Shell:

  • bash (默认)
  • sh
  • csh
  • zsh
# 查看当前 Shell
echo $SHELL

# 查看可用 Shell
cat /etc/shells

# 切换 Shell
chsh -s /bin/bash

1.2 脚本结构

Shell 脚本通常包含以下部分:

  • Shebang 行 (#!/bin/bash)
  • 注释说明
  • 变量定义
  • 主要命令
  • 函数定义
#!/bin/bash
# 脚本说明:这是一个示例脚本

# 变量定义
name="value"

# 命令执行
command

# 函数定义
function_name() {
    commands
}

2. 变量和参数

2.1 变量操作

Shell 变量分为:

  • 用户定义变量
  • 环境变量
  • 特殊变量
# 定义变量
name="John"
age=25

# 使用变量
echo $name
echo ${name}

# 只读变量
readonly name

# 删除变量
unset age

# 环境变量
export PATH="$PATH:/new/path"

2.2 特殊变量

Shell 提供了一些特殊变量用于获取脚本信息:

变量说明
$0脚本名称
$1第一个参数
$#参数个数
$*所有参数
$@所有参数(数组形式)
$?上一个命令的返回值
$$当前进程 ID
$!最后一个后台进程的 PID

3. 流程控制

3.1 条件判断

# if 语句
if [ condition ]; then
    commands
elif [ condition ]; then
    commands
else
    commands
fi

# case 语句
case $var in
    pattern1)
        commands
        ;;
    pattern2)
        commands
        ;;
    *)
        commands
        ;;
esac

3.2 循环

# for 循环
for i in item1 item2 item3; do
    commands
done

# while 循环
while [ condition ]; do
    commands
done

# until 循环
until [ condition ]; do
    commands
done

4. 函数

4.1 函数定义

# 基本函数
function name() {
    commands
    return value
}

# 带参数的函数
function print_params() {
    echo "First: $1"
    echo "Second: $2"
}

4.2 函数调用

# 调用函数
name

# 带参数调用
print_params "hello" "world"

# 获取返回值
result=$?

5. 文件操作

5.1 文件读写

# 读取文件
while read line; do
    echo $line
done < file.txt

# 写入文件
echo "content" > file.txt
echo "append" >> file.txt

5.2 文件状态测试

# 文件存在
[ -e file ]

# 是否是目录
[ -d dir ]

# 是否是文件
[ -f file ]

# 是否可读
[ -r file ]

6. 字符串处理

6.1 字符串操作

# 字符串长度
${#string}

# 字符串截取
${string:position:length}

# 字符串替换
${string/pattern/replacement}

6.2 正则表达式

# 使用 grep
grep "pattern" file

# 使用 sed
sed 's/old/new/g' file

# 使用 awk
awk '/pattern/ {print $1}' file

7. 调试技巧

7.1 调试选项

# 打开调试
set -x

# 关闭调试
set +x

# 检查语法
bash -n script.sh

7.2 错误处理

# 错误退出
set -e

# 捕获错误
trap 'echo Error at line $LINENO' ERR

# 自定义错误处理
error_handler() {
    echo "Error: $1"
    exit 1
}
Next
Shell 脚本执行消耗的时间