本文已参与「新人创作礼」活动,一起开启掘金创作之路。
一 介绍
类比:
- shell语法《==============》python语法
- bash解释器《============》python解释器
- 平台 《=================》平台
\
shell是一门解释型、弱类型、动态语言
二 变量
登录用户即进入交互式环境,与python的交互式环境都是一回事
[root@localhost ~]# x=1
[root@localhost ~]# x=2
[root@localhost ~]# echo $x
2
[root@localhost ~]# name1=egon
[root@localhost ~]# echo $name1
egon
[root@localhost ~]# echo ${name1}
egon
[root@localhost ~]# unset name1
[root@localhost ~]# echo $name1
[root@localhost ~]#
[root@localhost ~]# domain=www.baidu.com
[root@localhost ~]# ping -c1 $domain
[root@localhost ~]# name=egon
[root@localhost ~]# echo "hello $name"
hello egon
应用示例
[root@localhost ~]# vim heartbeat.sh
[root@localhost ~]# cat heartbeat.sh
#!/bin/bash
ip=192.168.11.20
ping -c1 $ip &>/dev/null
if [ $? = 0 ];then
echo "host $ip is alive"
else
echo "host $ip is down!!!"
fi
[root@localhost ~]# chmod +x heartbeat.sh
[root@localhost ~]# ./heartbeat.sh
host 192.168.11.20 is down!!!
三 引号对变量的影响
双引号=》弱引用
[root@localhost ~]# name=egon
[root@localhost ~]# echo "hello $name"
反引号=》取结果
[root@localhost ~]# today=`date +%F`
[root@localhost ~]# echo $today
2020-08-11
[root@localhost ~]# today=$(date +%H:%M:%S)
[root@localhost ~]# echo $today
22:05:55
示例
[root@localhost ~]# tar czf `date +%F`_bak.tar.gz /tmp
变量值包含空格时,需要加上双引号包含
[root@localhost ~]# msg="hello egon"
[root@localhost ~]# echo $msg
hello egon
四 变量作用域
环境变量: 在当前shell及子shell生效!
自定义变量: 仅在当前shell生效!
[root@localhost ~]# x=1
[root@localhost ~]# export x
[root@localhost ~]# bash
[root@localhost ~]# echo $x
1
set 查看所有变量(包括自定变量和环境变量) env 查看环境变量
\
系统环境变量配置文件:(系统定义的)
- 1、/etc/profile
- 2、/etc/bashrc
- 3、~/.bashrc
- 4、~/.bash_profile
系统环境变量
[root@localhost ~]# echo $PS1
[\u@\h \W]$
[root@localhost ~]# echo $HOSTNAME
localhost.localdomain
[root@localhost ~]# echo $USER
root
[root@localhost ~]# echo $UID
0
[root@localhost ~]# echo $SHELL
/bin/bash
[root@localhost ~]# echo $HISTSIZE
5
[root@localhost ~]# echo $MAIL
/var/spool/mail/root
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin