zoukankan      html  css  js  c++  java
  • shell编程基础

    全局变量与局部变量

    全局变量(global variables)

    printenv就可以打印全局变量,里面会包括系统生成的全局环境变量和用户自定义的环境变量。

    下面列出部分CentOS的全局环境变量:

    XDG_SESSION_ID=226
    HOSTNAME=centos7.yulongjun.com #主机名
    TERM=xterm-256color  #颜色方案
    SHELL=/bin/bash    #当前使用的shell
    HISTSIZE=1000      #历史命令最大条目
    SSH_CLIENT=172.17.251.64 50610 22 # ssh client信息,也就是我登录的地址信息
    SSH_TTY=/dev/pts/2 # 我的终端号
    USER=root # 当前用户名
    LS_COLORS=xxxxxxxxxxxxxxxx #ls时文件的配色,太长了省略
    MAIL=/var/spool/mail/root # 当前用户的系统邮件存放的位置
    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin # 命令的查找路径
    PWD=/app/scripts # 当前目录
    LANG=en_US.UTF-8 # 当前使用的语言
    HISTCONTROL=ignoredups # 历史命令控制选项,当前只有一个:去除连续重复的命令
    SHLVL=1 #shell 层级,当前只有一层shell
    HOME=/root # 当前用户家目录
    LOGNAME=root # 登录用户名
    SSH_CONNECTION=172.17.251.64 50610 172.17.37.200 22 # ssh连接信息,两端的信息都有
    OLDPWD=/app # 前一个工作目录

     可以只打印某一个全局环境变量,有两种方法,记得要用echo调用变量的话,要在变量名前面加一个$

    [root@centos7 ~]# printenv HOME
    /root
    [root@centos7 ~]# echo $HOME
    /root
    

     全局变量可用于子shell中(也可以用于当前shell下运行的脚本中,其实运行脚本就是在子shell中运行的):

    [root@centos7 ~]# bash
    [root@centos7 ~]# bash
    [root@centos7 ~]# ps -f --forest
    UID        PID  PPID  C STIME TTY          TIME CMD
    root     25202 25198  0 14:22 pts/2    00:00:00 -bash
    root     26148 25202  0 15:44 pts/2    00:00:00  \_ bash
    root     26180 26148  0 15:45 pts/2    00:00:00      \_ bash
    root     26207 26180  0 15:45 pts/2    00:00:00          \_ ps -f --forest
    [root@centos7 ~]# echo $HOME
    /root
    [root@centos7 ~]# exit
    exit
    [root@centos7 ~]# exit
    exit
    

     局部变量(local variables)

    没有专门的命令查看局部变量,只有一个set命令,会显示当前bash进程设置的所有变量,包括全局和局部。

    [root@centos7 ~]# set
    ABRT_DEBUG_LOG=/dev/null
    BASH=/bin/bash
    BASHOPTS=checkwinsize:cmdhist:expand_aliases:extglob:extquote:force_fignore:histappend:interactive_comments:login_shell:progcomp:promptvars:sourcepath
    BASH_ALIASES=()
    BASH_ARGC=()
    BASH_ARGV=()
    BASH_CMDS=()
    BASH_COMPLETION_COMPAT_DIR=/etc/bash_completion.d
    ...
    HISTSIZE=1000
    HOME=/root
    HOSTNAME=centos7.yulongjun.com
    HOSTTYPE=x86_64
    ID=0
    IFS=$' 	
    '

    创建局部变量和全局变量

    创建局部变量的方法很简单,就是变量名=值,例如var=10

    把局部变量export之后就是全局变量了。

    [root@centos7 ~]# var=10
    [root@centos7 ~]# echo $var
    10
    [root@centos7 ~]# bash
    [root@centos7 ~]# echo $var
    [root@centos7 ~]# exit
    exit
    [root@centos7 ~]# echo $var
    10
    [root@centos7 ~]# export var
    [root@centos7 ~]# echo $var
    10
    [root@centos7 ~]# bash
    [root@centos7 ~]# echo $var
    10

    调用变量

    $变量名即可调用变量,既返回(return)变量的值。

    例如:

    [root@centos7 ~]# var=10
    [root@centos7 ~]# echo $var
    10
    [root@centos7 ~]# echo $USER
    root
    [root@centos7 ~]# echo "My hostname is $HOSTNAME"
    My hostname is centos7.tanxiaojun.com
    [root@centos7 ~]# echo $PATH
    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
    [root@centos7 ~]# export PATH=$PATH:/root/bin
    [root@centos7 ~]# echo $PATH
    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin

    tips:PATH=$PATH:/root/bin看起来可能有点绕,其实就是$PATH取出原有的PATH的值,然后和后面的:/root/bin字符串连接起来,然后把连接后的字符串赋值给PATH

    删除环境变量

    unset 变量名

    unset之后,调用变量就是空的。

    [root@centos7 ~]# unset var
    [root@centos7 ~]# echo $var
  • 相关阅读:
    Circular vector
    【杂题】进制转换
    【POJ】3006
    【POJ】1503
    【POJ】2262
    【POJ】1083
    【POJ】2739
    对拍
    【POJ】2159
    【POJ】3299
  • 原文地址:https://www.cnblogs.com/tanxiaojun/p/10464736.html
Copyright © 2011-2022 走看看