Bash shell基础

106 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

一 介绍

类比:

  • 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