zoukankan      html  css  js  c++  java
  • Linux编程之变量

    Bash变量与变量分类

    变量命名规则

    • 变量名必须以字母或下划线打头,名字中间只能由字母、数字和下划线组成
    • 变量名的长度不得超过255个字符
    • 变量名在有效的范围内必须是唯一的
    • 在Bash中,变量的默认类型都是字符串型

    变量按照存储数据分类

    • 字符串型
    • 整型
    • 浮点型
    • 日期型

    shell变量分类

    • 用户自定义变量:变量是自定义的
    • 环境变量:这种变量中主要保存的是系统操作环境相关的数据
      变量可以自定义,但是对系统生效的环境变量名和变量作用是固定的
    • 位置参数变量:这种变量主要用来向脚本当中传递参数或数据的,
      变量名不能自定义,变量作用是固定的
    • 预定义变量:是Bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的

    Bash变量--用户自定义变量

    变量定义
    变量名=变量值     # 等号左右不能有空格
    如 name=tom
    
    变量调用
    echo $变量名
    
    变量叠加
    x=123
    x="$x"456
    x=${x}789
    
    变量查看
    set 
    选项:
        -u 如果设置此选项,调用未声明变量时会报错(默认无任何提示)
    
    变量删除
    unset 变量名
        如:unset name
    

    Bash变量 -- 环境变量

    环境变量与用户自定义变量的区别
        用户自定义变量只在当前的shell中生效
        环境变量在当前shell和这个shell的所有子shell中生效
    
    功能说明:以树状图显示程序。
    语  法:pstree [-acGhlnpuUV][-H <程序识别码>][<程序识别码>/<用户名称>
    参  数:
    -a  显示每个程序的完整指令,包含路径,参数或是常驻服务的标示。
    -c  不使用精简标示法。
    -G  使用VT100终端机的列绘图字符。
    -h  列出树状图时,特别标明现在执行的程序。
    -H <程序识别码>  此参数的效果和指定"-h"参数类似,但特别标明指定的程序。
    -l  采用长列格式显示树状图。
    -n  用程序识别码排序。预设是以程序名称来排序。
    -p  显示程序识别码。
    -u  显示用户名称。
    -U  使用UTF-8列绘图字符。
    -V  显示版本信息。
    
    补充说明:pstree指令用ASCII字符显示树状结构,清楚地表达程序间的相互关系。如果不指定程序识别码或用户名称,则会把系统启动时的第一个程 序视为基层,并显示之后的所有程序。若指定用户名称,便会以隶属该用户的第一个程序当作基层,然后显示该用户的所有程序。
    
    设置环境变量
    export 变量名=变量值
    或
    变量名=变量值
    export 变量名
    
    查看环境变量
    set     #查看所有环境变量
    env     #查看环境变量
    
    调用变量
    echo $变量名       # 如 echo $name
    
    删除变量
    unset 变量名       # 如 unset name
    

    PATH环境变量

    PATH变量:系统查找命令的路径
    
    echo $PATH      #查看PATH环境变量
    PATH="$PATH":/root/sh     #增加PATH变量的值,等号两边不能有空格
    

    PS1 环境变量

    PS1变量:命令提示符设置
        d:显示日期,格式为“星期 月 日”
        H:显示完整的主机名。如默认主机名“localhost.localdomain"
        	:显示24小时制时间,格式为 “HH:MM:SS”
        A:显示24小时制时间,格式为 “HH:MM”
        u:显示当前用户名
        w:显示当前所在目录的完整名称
        W:显示当前所在目录的最后一个目录
        $:提示符。如果是root用户会显示提示符为“#”,如果是普通用户会显示提示符为“$”
    

    bash语序变量

    locale
    # 查询当前系统语序变量
    locale -a  #查看所有语系
    locale -a | more
    LANG    定义系统主语序的变量
    LC_ALL  定义整体语序的变量
    
    echo $LANG      #查看当前语系变量    
    echo $LC_ALL    #查看整体语序的变量
    
    cat /etc/sysconfig/i18n     #查询系统默认语系
    cat /etc/default/locale     #ubuntu系统下默认语言的文件
    
    linux中文支持
    前提条件,正确安装的中文字体和中文语系:
        如果有图形界面,可以正确支持中文显示
        如果使用第三方远程工具,只要语系设置正确,可以支持中文显示
        如果使用纯字符界面,必须使用第三方插件(如zhcon等)
    

    位置参数变量

    $n:n为数字,$0代表命令本身,$1-$9代表第一道第九个参数,
        十个以上的参数需要用大括号包含,如${10}
    $*:这个变量代表命令行中所有的参数,$*把所有参数看出一个整体
    $@:这个变量也是代表命令行中所有参数,不过$@把每个参数区分对待
    $#:这个变量代表命令行中所有参数的个数
    
        #!/bin/bash
        #加减乘除 (+-*/)
        x1=$1
        operator=$2
        x2=$3
        echo "x1" $operator  "x2 = " $(($x1 $operator $x2))
    
        #!/bin/bash
        for i in "$*"   #$*中所有参数看成一个整体,所以for循环只执行一次
            do
                echo "The parameters is: $i"
            done
        for y in "$@"   #$@中的每个参数是独立的,因此“$@”中有几个参数,就会执行几次
            do 
                echo "Parameter:$y"
            done
        echo $#
    

    预定义变量

    $?:最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;
        如果这个变量的值为非0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确。
    $$:当前进程的进程号(PID)
    $!:后台运行的最后一个进程的进程号(PID)
    
        echo $$     #返回当前进程号 7588
        ps aux | grep 7588
    
        #!/bin/bash
        echo "current PID: $$"
        find / -name hello.sh &     #&为放入后台
        echo "backgroud: $!"
    
    接受键盘输入
    read [选项] [变量名]
    选项:
        -p:“提示信息”:在等待read输入时,输出提示符信息
        -t 秒数:read命令会一直等待用户输入,使用此选项可以指定等待时间
        -n 字符个数:read命令只接受指定的字符数,就会执行
        -s:隐藏输入的数据,适用于机密信息的输入
    
        #!/bin/bash
        read -p "please input your name: " -t 30 name
        echo -e "
    $name"
        
        read -p "please input your passwd: " -s passwd
        echo -e "
    $name"
        
        read -p "please input your angend [M/F]: " -n 1 sex
        echo $sex
    
  • 相关阅读:
    2019年Pycharm最新激活码_学生党适用
    Day14_分享昨天看到的一句话
    监督学习算法_k-近邻(kNN)分类算法_源代码
    Python学习需要安装的工具
    Python基础学习资料推荐
    总结一下公司项目使用各种较新的前端技术和 Api 的一些经验。
    由 Session 和 Cookie 的区别说起
    我理解的正确的代码
    回忆我是如何赢得一次踢毽子比赛
    日常的例子说明 throttle 和 debounce 的区别
  • 原文地址:https://www.cnblogs.com/tjuyuan/p/6709313.html
Copyright © 2011-2022 走看看