显示变量
root@Ubuntu:~# echo $变量名 或者 ${变量名} root@Ubuntu:~# echo $PATH root@Ubuntu:~# echo ${PATH} root@Ubuntu:~# echo $HOME root@Ubuntu:~# echo ${HOME}
设置变量
root@Ubuntu:~# echo $myname # 为空,下面设置: root@Ubuntu:~# myname=kevin root@Ubuntu:~# echo $myname # 设置完成
变量的规则:
字符串需要用单/双引号括起来
用转义字符可以将特殊字符转义
为变量增加内容:”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:~#
env:查看环境变量与常见环境变量说明
[root@CentOS ~]# env
环境变量随机数RANDOM其实是/dev/random这个文件,会随机产生0~32767之间的数
[root@CentOS ~]# declare -i number=$RANDOM*10/32768 [root@CentOS ~]# echo $number
set:查看所有变量(含有环境变量和自定义变量)
[root@CentOS ~]# set HISTFILE=/root/.bash_history # 历史命令记录的配置文件 HISTFILESIZE=1000 # 保存的历史命令的最大数量 HISTSIZE=1000 # 目前环境下可记录的历史命令数量 MAILCHECK=60 # 60秒扫描一次邮箱 PS1='[\u@\h \W]\$ ' # 命令提示符的前面 PS2='> ' # 如果使用转义字符,第二行以后的字符也会显示出来 $ # 目前这个shell所使用的的PID ? # 刚才执行完吗,命令的回传码
PS1:(提示符的设置)
# 在set里 # 查询相关说明: root@CentOS ~]# man bash \d:显示星期月日 \H:完整主机名 \h:取主机名第一个小数点前面的 \t:显示时间,24小时制 \T:显示时间,12小时制
变量内容的删除、替换
变量内容删除:# 从前往后删除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 。。。${。。。=。。。}:存在就赋值旧的,不存在就输出错误消息
鸟哥的linux私房菜学习笔记《二十一》变量及环境变量详解
最新推荐文章于 2023-05-05 21:21:29 发布