鸟哥的linux私房菜学习笔记《二十一》变量及环境变量详解

  1. 显示变量

    root@Ubuntu:~# echo $变量名 或者 ${变量名}
    root@Ubuntu:~# echo $PATH
    root@Ubuntu:~# echo ${PATH}
    root@Ubuntu:~# echo $HOME
    root@Ubuntu:~# echo ${HOME}
  2. 设置变量

    root@Ubuntu:~# echo $myname
    
    # 为空,下面设置:
    
    root@Ubuntu:~# myname=kevin
    root@Ubuntu:~# echo $myname
    
    # 设置完成
    
  3. 变量的规则:
    字符串需要用单/双引号括起来
    用转义字符可以将特殊字符转义
    为变量增加内容:”PATH”=”$PATH”:/home/bin”
    单引号`表示先执行,然后取执行结果
    设置成环境变量:export 变量名
    取消环境变量:unset 变量名
    通常大写表示环境变量,小写是普通变量

    
    # 在PATH变量中累加/home/dmtsai/bin:(以下都可以)
    
    root@Ubuntu:~# PATH=$PATH:/home/dmtsai/bin
    root@Ubuntu:~# PATH="$PATH":/home/dmtsai/bin
    root@Ubuntu:~# PATH=${PATH}:/home/dmtsai/bin
    
    
    # 将name内容多出来yes:($可以理解为取变量的内容)
    
    root@Ubuntu:~# name=$name"yes
    root@Ubuntu:~# name=${name}yes
    
    
    # 设置环境变量:
    
    root@Ubuntu:~# export name
    
    
    # 取消环境变量:
    
    root@Ubuntu:~# unset name
    
    # 进入内核的子进程(先执行uname -r命令,后执行cd命令)
    
    root@Ubuntu:~# cd /lib/modules/`uname -r`/kernel
    root@Ubuntu:~# cd /lib/modules/$(uname -r)/kernel
    
    # 单引号只识别为字符,双引号可识别特殊符号
    
    root@Ubuntu:~# name=kevin
    root@Ubuntu:~# echo $name
    kevin
    root@Ubuntu:~# myname="$name its me"
    root@Ubuntu:~# echo $myname
    kevin its me
    root@Ubuntu:~# name='$name its me'
    root@Ubuntu:~# echo $myname
    $name its me
    root@Ubuntu:~# 
  4. env:查看环境变量与常见环境变量说明

    [root@CentOS ~]# env

    环境变量随机数RANDOM其实是/dev/random这个文件,会随机产生0~32767之间的数

    [root@CentOS ~]# declare -i number=$RANDOM*10/32768   [root@CentOS ~]# echo $number
  5. set:查看所有变量(含有环境变量和自定义变量)

    [root@CentOS ~]# set
    HISTFILE=/root/.bash_history
    
    # 历史命令记录的配置文件
    
    HISTFILESIZE=1000
    
    # 保存的历史命令的最大数量
    
    HISTSIZE=1000
    
    # 目前环境下可记录的历史命令数量
    
    MAILCHECK=60
    
    # 60秒扫描一次邮箱
    
    PS1='[\u@\h \W]\$ '
    
    # 命令提示符的前面
    
    PS2='> '
    
    # 如果使用转义字符,第二行以后的字符也会显示出来
    
    $
    
    # 目前这个shell所使用的的PID
    
    ?
    
    # 刚才执行完吗,命令的回传码
    
  6. PS1:(提示符的设置)

    
    # 在set里
    
    
    # 查询相关说明:
    
    root@CentOS ~]# man bash
    \d:显示星期月日
    \H:完整主机名
    \h:取主机名第一个小数点前面的
    \t:显示时间,24小时制
    \T:显示时间,12小时制
    
  7. 变量内容的删除、替换
    这里写图片描述
    变量内容删除:

    
    # 从前往后删除PATH中的符合 “/*kerberos/bin:” 这个条件的最短字符串
    
    [root@CentOS ~]# echo ${PATH#/*kerberos/bin:}
    
    # 从前往后删除PATH中的符合 “/*kerberos/bin:” 这个条件的最长字符串
    
    [root@CentOS ~]# echo ${PATH##/*kerberos/bin:}
    
    # 详解:
    
    ${PATH##/*kerberos/bin:}:匹配“/*kerberos/bin:”
    ${。。。#。。。}:从前往后删除符合条件的最短项
    ${。。。##。。。}:从前往后删除符合条件的最长项
    
    
    # 从后往前删除PATH中的符合 “:*bin” 这个条件的最短字符串
    
    [root@CentOS ~]# echo ${PATH%:*bin}
    
    # 从后往前删除PATH中的符合 “:*bin” 这个条件的最长字符串
    
    [root@CentOS ~]# echo ${PATH%%:*bin}
    
    # 详解:
    
    ${PATH%%:*bin}:匹配 “:*bin”
    ${。。。%。。。}:从后往前删除符合条件的最短项
    ${。。。%%。。。}:从后往前后删除符合条件的最短项

    例子:

    
    # 删除MAIL的/var/spool/mail/root中,“root”前的
    
    
    # 从前往后匹配“/*/”最长为“/var/spool/mail/”
    
    [root@CentOS ~]# echo ${MAIL##/*/}
    
    
    # 删除MAIL的/var/spool/mail/root中的“/root”
    
    
    # 从后往前匹配“/*”最短为“/root”
    
    [root@CentOS ~]# echo ${MAIL%/*}

    命令内容替换:

    
    # 将PATH中第一个“sbin”替换为“SBIN”:
    
    [root@CentOS ~]# echo ${PATH/sbin/SBIN}
    
    # 将PATH中所有“sbin”替换为“SBIN”:
    
    [root@CentOS ~]# echo ${PATH//sbin/SBIN}
    
    # 详解:
    
    ${PATH/sbin/SBIN}:匹配“sbin”
    ${PATH/。。。/。。。}:将第一个符合匹配条件的内容替换
    ${PATH//。。。/。。。}:将所有符合匹配条件的内容替换

    变量的测试及替换:
    这里写图片描述

    
    # 如果oldname存在值,则newname=oldname,如果oldname不存在值,则newname=root
    
    [root@CentOS ~]# newname=${oldname-root}
    详解:
    newname${oldname-content}:匹配oldname
    。。。${。。。-。。。}:存在就赋值旧的,不存在就赋值新的
    
    
    # 如果oldname存在值,则newname=oldname,如果oldname不存在值或为空字符串,则newname=root
    
    [root@CentOS ~]# newname=${oldname:-root}
    详解:
    newname${oldname:-content}:匹配oldname
    。。。${。。。:-。。。}:存在就赋值旧的,不存在或为空就赋值新的
    
    
    # 如果oldname存在值,则newname=oldname,如果oldname不存在值,则newname=root并且oldname=root
    
    [root@CentOS ~]# newname=${oldname=root}
    详解:
    newname${oldname=content}:匹配oldname
    。。。${。。。=。。。}:存在就赋值旧的,不存在就都赋值新的
    
    
    # 如果oldname存在值,则newname=oldname,如果oldname不存在值,则输出错误消息“root”
    
    [root@CentOS ~]# newname=${oldname?root}
    详解:
    newname${oldname?content}:匹配oldname,错误消息是content
    。。。${。。。=。。。}:存在就赋值旧的,不存在就输出错误消息
    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值