• shell 内置命令


    1 Read

    1.1 介绍

    read 是 Shell 内置命令,用于从标准输入中读取数据并赋值给变量。如果没有进行重定向,默认就是从终端控制台读取用户输入的数据;如果进行了重定向,那么可以从文件中读取数据。

    1.2 语法

    read [-options] [var1 var2 ...]
    
    • 1

    options支持的参数:

    选项说明
    -a array把读取的数据赋值给数组 array,从下标 0 开始。
    -d delimiter用字符串 delimiter 指定读取结束的位置,而不是一个换行符(读取到的数据不包括 delimiter)。
    -e在获取用户输入的时候,对功能键进行编码转换,不会直接显式功能键对应的字符。
    -n num读取 num 个字符,而不是整行字符。
    -p prompt显示提示信息,提示内容为 prompt。
    -r原样读取(Raw mode),不把反斜杠字符解释为转义字符。
    -s静默模式(Silent mode),不会在屏幕上显示输入的字符。
    当输入密码和其它确认信息的时候,这是很有必要的。
    -t seconds设置超时时间,单位为秒。如果用户没有在指定时间内输入完成,
    那么 read 将会返回一个非 0 的退出状态,表示读取失败。
    -u fd使用文件描述符 fd 作为输入源,而不是标准输入,类似于重定向。

    1.3 demo

    1 使用 read 命令给多个变量赋值

    #!/bin/bash
    read -p "请输入姓名、年龄、爱好:" name age hobby
    
    echo "姓名: ${name}"
    echo "年龄: ${age}"
    echo "爱好: ${hobby}"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述
    2 读取一个字符

    #!/bin/bash
    read -n 1 -p "您确定要删除用户的数据吗? (y/n):" char
    echo
    echo "您输入的字符为: ${char}"
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    3 校验密码
    5秒校验密码是否一致

    #!/bin/bash
    read -t 5 -sp "输入密码(5秒内):" pwd1
    echo
    read -t 5 -sp "请确认密码(5秒内):" pwd2
    echo
    
    echo "pwd1:${pwd1}, pwd2:${pwd2}"
    
    if
             [ $pwd1 == $pwd2 ]
    then
            echo "密码一致"
    else
            echo "验证失败,密码不一致"
    fi
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    在这里插入图片描述

    2 Exit

    2.1 介绍

    exit 用于退出当前Shell环境进程结束运行, 并且可以返回一个状态码.一般使用 $? 可以获取退出状态码

    2.2 用法

    # 默认返回状态码0, 一般代表命令执行成功
    exit  
    
    • 1
    • 2
    # 数字建议的范围0~255,  一般代表命令执行失败
    exit 非0数字  
    
    • 1
    • 2

    2.3 demo

    #!/bin/bash
    echo "hello"
    exit
    echo "world"            
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    3 declare

    declare命令用于声明 shell 变量,实现关联数组变量。

    3.1 语法

    关联数组也称为“键值对(key-value)”数组,键(key)也即字符串形式的数组下标,值(value)也即元素值。

    declare -A 关联数组变量名=([字符串key1]=值1 [字符串key2]=值2 …)

    获取指定key的值:

    ${关联数组变量名[key]}
    
    • 1

    获取所有值:

    ${关联数组变量名[*]} # 方式1
    ${关联数组变量名[@]} # 方式2
    
    • 1
    • 2

    3.2 demo

    #!/bin/bash
    declare -A array=([name]="张三" [age]=14)
    
    echo ${array[name]}
    echo ${array[age]}
    echo ${array[*]}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

  • 相关阅读:
    恶意软件通杀 Win、macOS、Linux 三大系统;唱片巨头起诉 Youtube-dl 的托管服务商;2022 年不是 Linux 桌面元年 | 开源日报
    Redis(单/多)线程
    论文阅读 Continuous-Time Dynamic Network Embeddings
    C#中的 Attribute 与 Python/TypeScript 中的装饰器是同个东西吗
    ABC-Index-(dp枚举方式优化)
    C++(11):tuple
    处理器架构和配置
    基于Dockerfile搭建LNMP环境
    【通道注意力机制】SENet
    mysql 添加limit,sql 语句执行时间变长的问题
  • 原文地址:https://blog.csdn.net/qq_34125999/article/details/125444210