zoukankan      html  css  js  c++  java
  • shell编程之BASH变量(2)

    变量命名规范

    在bash中,变量的默认类型都是字符串型,定义 name = 'kk'

    变量分类

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

    变量调用

    echo $变量名
    例如
     echo $x
     echo $name
    

    变量叠加

    x = 123
    x = "$x"456
    x = ${x}789
    

    变量查看

    set 
    

    设置环境变量

    export 变量名 = 变量值
    
    或
    
    变量名 = 变量名
    export 变量名
    

    常用环境变量

    bash-4.1$ env
    HOSTNAME=iZ2zebwk59ftsrtzd05mpzZ   主机名
    SHELL=/bin/bash  当前的shell
    TERM=xterm  终端环境
    HISTSIZE=1000   历史命令条数
    SSH_CLIENT=114.247.188.89 14320 60022  当前操作环境使用ssh连接的,这里记录客户端ip
    OLDPWD=/home/chenjinxin  
    SSH_TTY=/dev/pts/0  ssh连接的终端是pts/1
    USER=program  当前登录的用户
    
    

    PATH环境变量

    PATH变量:系统查找命令的路径
    
    bash-4.1$ echo $PATH
    /usr/local/server/node/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/chenjinxin/bin
    
    echo $PATH  
    #查看PATH环境变量
    PATH = "$PATH":/root/sh
    #临时添加PATH变量的值
    

    PS1环境变量

    PS1变量:命令提示符设置

    当前语系查询

    locale
    查询当前系统语系

    bash-4.1$ locale
    LANG=en_US.UTF-8
    LC_CTYPE="en_US.UTF-8"
    LC_NUMERIC="en_US.UTF-8"
    LC_TIME="en_US.UTF-8"
    LC_COLLATE="en_US.UTF-8"
    LC_MONETARY="en_US.UTF-8"
    LC_MESSAGES="en_US.UTF-8"
    LC_PAPER="en_US.UTF-8"
    LC_NAME="en_US.UTF-8"
    LC_ADDRESS="en_US.UTF-8"
    LC_TELEPHONE="en_US.UTF-8"
    LC_MEASUREMENT="en_US.UTF-8"
    LC_IDENTIF
    

    语系变量LANG

    echo $LANG
    查看系统当前语系
    bash-4.1$ echo $LANG
    en_US.UTF-8
    
    locale -a | more
    查看linux支持的所有语系
    

    查看系统默认语系

    cat /etc/sysconfig/i18n
    bash-4.1$ cat /etc/sysconfig/i18n
    LANG=en_US.UTF-8
    SYSFONT=latarcyrheb-sun16
    

    位置参数变量

    位置参数变量 作用
    $n n为数字,$0代表命令本身,$1-$9代表第一到第九个参数,十以上的参数需要用大括号包含,如${10}
    $* 代表命令行中所有的参数,$*把所有的参数看成一个整体
    $@ 代表命令行中所有的参数,不过$@把每个参数区分对待
    $# 代表命令行中所有参数的个数

    例子1

    #!/bin/bash
    
    num1 = $1
    num2 = $2
    
    sum = $(($num1+$num2))
    
    echo $sum
    
    

    $*和$@的区别

    #!/bin/bash
    for i in "$*"
    #$*中的所有参数看成一个整体,所以这个for循环只会循环一次
            do
                    echo "$i"
            done
    
    for y in "$@"
    #$@中的每个参数都看成是独立的,所以中几个参数,就会循环几次
            do
                    echo "$y"
                    echo "
    "                       
            done
    

    预定义变量

    预定义变量 作用
    $? 最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非0,则证明上一个命令执行不正确
    $$ 当前进程的进程好(PID)
    $! 后台运行的最后一个进程的进程好(PID)

    接受键盘输入

    read [选项][变量名]

    • -p "提示信息": 在等待read输入时,输出提示信息
    • -t 秒数: read命令会一直等待用户输入,使用此选项可以指定等待时间
    • -n 字符数: read命令只接受指定的字符数,就会执行
    • -s 隐藏输入的数据,适用于机密信息的输入
    #!/bin/bash  
    read -p "Enter your name : " name  
    echo "Hi, $name. Let us be friends!" 
    
    #!/bin/bash  
    read -t 10 -p "Enter the Internet domain name (e.g. nixcraft.com) : "  
    domain_name  
    whois $domain_name
    
    #!/bin/bash  
    read -s -p "Enter Password : " my_password  
    echo  
    echo "Your password - $my_password" 
    
  • 相关阅读:
    面试系列14 redis的过期策略都有哪些
    面试系列13 redis都有哪些数据类型
    面试系列12 redis和memcached有什么区别
    面试系列11 缓存是如何使用
    面试系列10 es生产集群的部署架构
    linux命令中的“<”和“|”是什么意思?
    如何征服面试官,拿到Offer [转]
    ddt框架优化(生成html报告注释内容传变量)
    python笔记31-使用ddt报告出现dict() -> new empty dictionary dict(mapping) 问题解决
    测试中 unittest.main(verbosity=1) 是什么意思
  • 原文地址:https://www.cnblogs.com/chenjinxinlove/p/7127544.html
Copyright © 2011-2022 走看看