变量

含义:
内存中的一块空间,没有固定的值,是可以变化的,以符号开头规则

1.1普通变量

规则:

尽量使用字母,不能以数字开头
X+y =10 x=20 y=? 未知数(变量)
bao=‘’
赋值(把数据从放在变量中)

####
root@oldboyedu50-lnb /server/scripts]# echo $ip
10.0.0.200
[root@oldboyedu50-lnb /server/scripts]# 1ip=10.0.0.200
-bash: 1ip=10.0.0.200: command not found

1.2变量分类: 普通变量(局部变量) 环境变量(全局变量) 特殊变量:(重点)
看变量:echo $xx

1.3普通变量(局部变量)
Ip
Oldboy
Li
Ip

1.4 环境变量(全局变量)
a)大写
b)系统定义的
c)在大部分地方可以使用
PATH PS1 LANG

1.5 取env结果的第1列
方法1
[root@oldboyedu50 ~]# env |awk -F "=" '{print $1}'
HOSTNAME
SELINUX_ROLE_REQUESTED
TERM
SHELL
HISTSIZE
SSH_CLIENT
SELINUX_USE_CURRENT_RANGE
SSH_TTY
USER
LS_COLORS
MAIL

方法2
[root@oldboyedu50 ~]# env |sed -r 's#=.*##g' 以=后面的数全部换掉
HOSTNAME
SELINUX_ROLE_REQUESTED
TERM
SHELL
HISTSIZE
SSH_CLIENT
SELINUX_USE_CURRENT_RANGE
SSH_TTY
USER

方法3 egrep
[root@oldboyedu50 script]# env |egrep '^[A-Z0-9_]+' -o
HOSTNAME
SELINUX_ROLE_REQUESTED
TERM
SHELL
HISTSIZE
SSH_CLIENT
SELINUX_USE_CURRENT_RANGEa
SSH_TTY

方法2

[root@oldboyedu50 script]# env |egrep '^[^=]+' -o
HOSTNAME
SELINUX_ROLE_REQUESTED
TERM
SHELL
HISTSIZE
SSH_CLIENT
SELINUX_USE_CURRENT_RANGE
SSH_TTY
USER

1.6 全局变量与局部变量的区别:
(普通变量)局部变量在当前生效
(环境变量)全局变量无论哪里都能使用

[root@oldboyedu50-lnb /server/scripts]# unset OLDBOY
[root@oldboyedu50-lnb /server/scripts]# env |grep OLDBOY
[root@oldboyedu50-lnb /server/scripts]# OLDBOY=10
[root@oldboyedu50-lnb /server/scripts]# echo $OLDBOY
10
[root@oldboyedu50-lnb /server/scripts]# cat show.sh
echo $OLDBOY
[root@oldboyedu50-lnb /server/scripts]# sh show.sh
[root@oldboyedu50-lnb /server/scripts]# source show.sh
10
[root@oldboyedu50-lnb /server/scripts]# . show.sh
10
在脚本中执行除了sh xx.sh 外 还有source xx.sh 或 . xx.sh

1.7 用source生效的有
/etc/sysconfig/i18n
/etc/profile

1.8 特殊变量(重点)

###让day出现在6的后面
[root@oldboyedu50 ~]# week=6
[root@oldboyedu50 ~]# echo $weekday
[root@oldboyedu50 ~]# echo ${week}day
6day
[root@oldboyedu50 ~]# echo $week'day'
6day
[root@oldboyedu50 ~]# echo $week\day
6day

1.9书写一个计算器 加减乘除
BEGIN可以在xshell显示小数点
[root@oldboyedu50 script]# awk 'BEGIN{print 1/3}'
0.33333

#变量中 把两个数字放在变量中
[root@oldboyedu50-lnb /server/scripts]# n1=10
[root@oldboyedu50-lnb /server/scripts]# n2=20
[root@oldboyedu50-lnb /server/scripts]# awk 'BEGIN{print n1/n2}'
awk: fatal: division by zero attempted

2.1 #命令行中的变量 放在awk中使用
[root@oldboyedu50-lnb /server/scripts]# awk 'BEGIN{print n1,n2}'
[root@oldboyedu50-lnb /server/scripts]# awk –vn1=10 'BEGIN{print num1 }'
10
[root@oldboyedu50-lnb /server/scripts]# awk -vn1=10 -vn2=20 'BEGIN{print nu1/nu2 }' -v参数 一般把shell环境里的变量传递给awk
0.5

转载于:https://blog.51cto.com/13860358/2162136

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值