变量

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

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

  

posted @ 2018-09-21 19:24  w浅时光  阅读(231)  评论(0编辑  收藏  举报