网站首页 > 精选教程 正文
变量
又分为环境变量和自定义变量
环境变量
使用 env 命令查看
[api@kfxqtyglpt ~]$ env
SHELL=/bin/bash
HISTSIZE=1000
SSH_CLIENT=10.190.179.212 60463 50023
SELINUX_USE_CURRENT_RANGE=
QTDIR=/usr/lib64/qt-3.3
QTINC=/usr/lib64/qt-3.3/include
SSH_TTY=/dev/pts/1
HISTORY_FILE=/var/log/usermonitor/usermonitor.log
JRE_HOME=/home/api/jdk1.7.0_25/jre
USER=api
MAVEN_HOME=/home/api/maven
MAIL=/var/spool/mail/api
PATH=/home/api/jdk1.7.0_25/bin:/home/api/maven/bin:/home/api/maven/bin:/home/api/jdk1.7.0_25/bin:/home/api/jdk1.7.0_25/jre/bin:/usr/local/nginx/sbin:/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/api/bin
JAVA_HOME=/home/api/jdk1.7.0_25
LANG=zh_CN.UTF-8
复制代码
环境变量通常用全大写的形式
自定义变量
[api@kfxqtyglpt ~]$ myname=nanhai13
复制代码
注意等号两边不能有空格
查看变量
[api@kfxqtyglpt ~]$ echo $myname
nanhai13
[api@kfxqtyglpt ~]$ echo ${myname}
nanhai13
复制代码
推荐使用${}方式
特殊情况处理
- 数据内容有空格
- 用单引号或者双引号括起来
- 或者用转移字符\把空格转义了
- [api@kfxqtyglpt ~]$ myname="nanhai 13" [api@kfxqtyglpt ~]$ echo ${myname} nanhai 13 [api@kfxqtyglpt ~]$ myname='nanhai 14' [api@kfxqtyglpt ~]$ echo ${myname} nanhai 14 [api@kfxqtyglpt ~]$ myname=nanhai\ 15 [api@kfxqtyglpt ~]$ echo ${myname} nanhai 15 复制代码
- 数据内容中引用其他变量
- 用双引号括起。不能用单引号
- [api@kfxqtyglpt ~]$ hello="hi ${myname}" [api@kfxqtyglpt ~]$ echo $hello hi nanhai 15 复制代码
- 如果用单引号
- [api@kfxqtyglpt ~]$ hello='hi ${myname}' [api@kfxqtyglpt ~]$ echo $hello hi ${myname} 复制代码
- 可以看出单引号和双引号的区别了
- 数据内容中执行其他命令
- 使用$()可以执行命令
- [api@kfxqtyglpt ~]$ myversion=$(uname -r) [api@kfxqtyglpt ~]$ echo $myversion 2.6.32-431.el6.x86_64 复制代码
查看自定义变量
使用set命令。可以查看所有环境变量和自定义变量
删除自定义变量
unset命令
其他
$本身也是个变量
[api@kfxqtyglpt ~]$ echo $
74292
复制代码
'$'显示当前shell的pid
?是上一个命令的结果
一般命令执行后都会回传一个执行结果。
执行成功一般回传0,如果执行出错,会回传错误码。
[api@kfxqtyglpt ~]$ echo $?
0
[api@kfxqtyglpt ~]$ name=66 66
-bash: 66: command not found
[api@kfxqtyglpt ~]$ echo $?
127
复制代码
将自定义变量导出为环境变量
使用export命令,注意没有$符号
[api@kfxqtyglpt ~]$ export myname
复制代码
使用env查看
[api@kfxqtyglpt ~]$ env
...
myname=nanhai 15
...
复制代码
我们登入linux,取得一个bash命令窗口,就是开启了一个bash程序,这个bash有自己的pid
在这个shell下执行的所有命令都是这个shell程序的子程序
子程序会继承父程序的环境变量,但是不会继承父程序的自定义变量
[api@kfxqtyglpt ~]$ name=superman
[api@kfxqtyglpt ~]$ echo $name
superman
[api@kfxqtyglpt ~]$ bash ========>开启一个bash子程序
[api@kfxqtyglpt ~]$ echo $name
[api@kfxqtyglpt ~]$ exit ========>返回父程序
exit
[api@kfxqtyglpt ~]$ export name ========>export成环境变量
[api@kfxqtyglpt ~]$ bash
[api@kfxqtyglpt ~]$ echo $name
superman
复制代码
读取输入值
编写shell脚本时经常会用到需要获取用户输入的功能。这就需要read命令
[api@kfxqtyglpt ~]$ read name
king
[api@kfxqtyglpt ~]$ echo ${name}
king
[api@kfxqtyglpt ~]$ read -p "输入名字:" -t 10 name
输入名字:aaaaa
[api@kfxqtyglpt ~]$ echo $name
aaaaa
复制代码
read直接加变量名即可
参数-p可以加说明,-t是等待时间
声明变量的类型
默认定义的变量都是字符串类型,所以
[api@kfxqtyglpt ~]$ sum=10+20
[api@kfxqtyglpt ~]$ echo ${sum}
10+20
复制代码
声明变量类型使用declare命令,参数
-a数组类型
-i整数类型
-x导出为环境变量
-r只读类型
[api@kfxqtyglpt ~]$ unset sum
[api@kfxqtyglpt ~]$ declare -i sum
[api@kfxqtyglpt ~]$ sum=10+20
[api@kfxqtyglpt ~]$ echo $sum
30
复制代码
数组
直接使用中括号来定义即可,使用时需要用${}
[api@kfxqtyglpt ~]$ arr[0]=aa
[api@kfxqtyglpt ~]$ arr[1]=bb
[api@kfxqtyglpt ~]$ arr[2]=cc
[api@kfxqtyglpt ~]$ echo "${arr[0]},${arr[2]}"
aa,cc
- 上一篇: Nginx流控 nginx流控配置
- 下一篇: nginx 流量控制 nginx流量分发
猜你喜欢
- 2024-10-05 nginx 流量控制 nginx流量分发
- 2024-10-05 Nginx流控 nginx流控配置
- 2024-10-05 nginx 配置$Query String $args 根据条件proxy_pass
- 2024-10-05 「每天一道面试题」Nginx rewrite全局变量
- 2024-10-05 Nginx核心知识汇总,113页Nginx核心指南(后附项目实战)
- 2024-10-05 细述:nginx http内核模块提供的变量和解释
- 2024-10-05 Nginx之http框架提供的相关变量 nginx之http框架提供的相关变量是什么
- 2024-10-05 【nginx】十五、nginx高阶之openresty内置变量
你 发表评论:
欢迎- 最近发表
-
- 我的世界光影MOD下载(我的世界光影mod下载安装)
- 我的世界1.7/1.8VoxelMap小地图MOD下载
- 我的世界1.7.10多世界 整合包(我的世界1.7.10forge整合包)
- 我的世界1.8最好用的修改器下载(我的世界1.8最好用的修改器下载安装)
- 我的世界更多弯曲动作MOD下载(我的世界更多弯曲动作mod下载手机版)
- 我的世界龙珠MOD下载(我的世界龙珠模组整合包下载)
- 我的世界1.7.10以太2 下载(我的世界以太2mod1.12.2)
- 我的世界虚拟人生MOD下载分享(我的世界虚拟人生下载安装)
- 我的世界无正版账号的简单联机方法(非网易版,仅适用于局域网)
- “我的语言极限,即是我的世界的极限。” ——《On Java》书籍推荐
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)