• Shell学习笔记


    一、变量的命名

    变量名必须以字母或下划线开头,由字母、数字、或下划线组成,变量名的长度不能超过255个字符。

    二、变量的分类

    1. 用户自定义变量

    2. 环境变量

    3. 位置参数变量

    4. 预定义变量

    三、用户自定义变量

    用户自定义变量是“局部变量”,只能在当前的Shell中生效

    1. 定义变量

    变量名=变量值

    示例:

    注意:等号前后不能有空格,否则会出现以下错误提示:

    2. 变量调用

    $变量名 或 ${变量名}

    示例:

    3. 变量叠加

    示例:

    或:

    4. 删除变量

    unset 变量名

    示例:

    5. 查看变量

    1) env:查看所有的环境变量

    2) set:查看所有的变量(包括用户自定义变量)

    四、环境变量

    环境变量是“全局变量”,在当前Shell和这个Shell的所有子Shell中生效

    1. 设置环境变量

    export 变量名=变量值

    变量名=变量值

    export 变量名

    示例:

    注意:设置环境变量时,建议使用大写,避免与用户自定义变量或系统命令(都是小写的)冲突。

    2. 删除环境变量,环境变量调用,查看环境变量

    用户自定义变量的使用方式相同

    3. 设置PS1环境变量

    PS1环境变量会影响用户提示符信息,示例如下:

    五、位置变量

    1. $n

    n为数字,$0代表命令本身,$1-$9代表第一到第九个参数,十以上的参数需要用大括号包含,如${10}。

    示例:

    #!/bin/bash
    a=$1
    b=$2
    sum=$(($a +$b))
    echo $sum

    2. $*

    这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体

    #!/bin/bash
    for i in "$*"
    do
        echo $i
    done
    
    #运行:test.sh 1 2 3
    #输出:1 2 3
    #解释:$*中的所有参数被看成是一个整体,所以这个for循环只会循环一次

    3. $@

    这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待

    
    
    #!/bin/bash
    for i in "$@"
    do
        echo $i
    done
    #运行:test.sh 1 2 3
    #输出:
    1 2 3 #解释:$@中的每个参数被看成独立的,所以这个for循环会循环多次

    4. $#

    这个变量代表命令行中的所有参数的个数

    #!/bin/bash
    echo $#
    
    #运行:test.sh 1 2 3
    #输出:3

    六、预定义变量

    1. $?

    最后一次执行的命令的返回状态。如果这个值为0,则说明上一个命令执行正确;如果这个值不为0,则代表上一个命令执行的错误码。

    示例:

    2. $$

    当前进程的进程号(PID)

    示例:

    3. $!

    后台运行的最后一个进程的进程号(PID)

    #!/bin/bash
    
    find /root -name "test.sh" &
    echo $!

    七、read命令

    接受键盘输入

    1. 参数说明

    -p "提示信息": 在等待read输入时,输出的提示信息

    -t 秒数:read命令会一直等待用户输入,使用此参数可以指定等待时间

    -n 字符数:read命令只接受指定的字符数,就会继续执行

    -s : 隐藏输入的数据,适用于机密信息的输入

    2. 示例

    #!/bin/bash
    
    read -p "please input username:" username
    read -p "please input password:" -s password
    echo -e "
    "
    read -p "please input sex[F/M]:" -n 1 sex
    echo -e "
    "
    echo "Welcome $username[$sex]"
  • 相关阅读:
    ASP.NET简单登录注册实例
    ViewState 视图状态对象实例
    重定向redirect与跳转forward区别
    request请求对象实例
    Page_Load 事件
    JQuery增删改查
    winfrom增删改查
    SQLHelper类
    html弹出div弹窗
    react diff算法
  • 原文地址:https://www.cnblogs.com/refine1017/p/shell_variable.html
Copyright © 2020-2023  润新知