变量
含义:
内存中的一块空间,没有固定的值,是可以变化的,以符号开头规则
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
想要体面生活,又觉得打拼辛苦;想要健康身体,又无法坚持运动。人最失败的,莫过于对自己不负责任,连答应自己的事都办不到,又何必抱怨这个世界都和你作对?人生的道理很简单,你想要什么,就去付出足够的努力。