Shell Bash 的内部变量

作者: 赵者也 | 来源:发表于2017-03-30 20:32 被阅读82次

    $BASH 变量 —— 用于引用 Bash 实例的全路径名。变量的值如下所示:

    BASH 变量

    $HOME 变量 —— 当前用户的 home 目录,通常是 /home/<username>。

    $IFS 变量 —— IFS 是内部字段分隔符的缩写。此变量决定当 Bash 解析字符串时将怎样识别字段,或单词分界线。变量 $IFS 的默认值是空格、制表符和换行符。下面是使用示例:

    IFS 变量

    $OSTYPE 变量 —— 操作系统类型:

    OSTYPE 变量

    $SECONDS 变量 —— 脚本已经运行的秒数。下面是该变量的使用示例:

    #! /bin/bash -
    
    TIME_LIMIT=10
    INTERVAL=1
    
    echo
    echo "Hit Ctrl-C to Exit"
    echo
    
    while [ "$SECONDS" -le "$TIME_LIMIT" ]
    do
        if [ "$SECONDS" -eq 1 ]
        then
            units=second
        else
            units=seconds
        fi
        echo "This script has been running $SECONDS $units."
    
        sleep $INTERVAL
    done
    
    exit 0
    

    该示例的运行效果:


    示例的运行效果

    $TMOUT 变量 —— 如果 $TMOUT 变量被指定了一个非零的值,此值就会被 Bash 的内部命令
    read 作为默认的超时秒数。在交互式的 Shell 中,$TMOUT 的值被作为命令行提示符等待输入的秒数,如果在等待的秒数内没有输入,Bash 将自动被终结。该变量的使用示例:

    #! /bin/bash -
    
    set -o nounset
    TMOUT=3
    
    echo "Are you ok? (Y/N)"
    read input
    
    if [ "$input" == "Y" ]
    then
        echo "Continue..."
    else
        echo "Exit!"
    fi
    

    该示例的运行效果:


    示例的运行效果

    $UID 变量 —— 当前用户的账号标识码(ID 号),与 /etc/passwd 中记录的相同。此变量记录的是当前账户的真实 ID,即使该账户通过 su 命令已经获得了另一个账号的权限。$UID 是一个只读变量,不接受从命令行或脚本的修改。下面这个脚本使用 $UID 变量来判断当前账号是否为 root:

    #! /bin/bash -
    
    root_uid=0
    if [ "$UID" -eq "$root_uid" ]
    then
        echo "You are root."
    else
        echo "You are just an ordinary user."
    fi
    
    exit 0
    

    该示例的运行效果:


    示例的运行效果

    本文参考自 《Linux Shell命令行及脚本编程实例详解

    相关文章

      网友评论

      • 和奇谷朴:你运行的环境是什么?自己搭的吗?
        和奇谷朴:@赵者也 好的👌谢谢
        赵者也:@和奇谷朴 不是自己搭的,就是ubuntu的环境

      本文标题:Shell Bash 的内部变量

      本文链接:https://www.haomeiwen.com/subject/kzkpottx.html