一、解释器
第一行,声明脚本使用的bash解释器
(#! /bin/env 解释器 #自动查询解释器)
二、 变量
1. 变量的定义和初始化
【变量的规范】
(1) 严格区分大小写
(2)不能含有特殊符号
(3) 变量名不能数字开头
(4) 赋值过程中,等号左右不能有空格
#定义变量与初始化
var=hello
hostname='hostname'
coreVersion=$(uname -r)
#打印变量的值
echo $var
echo ${var}
echo ${var:2:3}
#变量重新初始化
var=world
#取消变量的定义
unset var
2. 给变量赋值 (read)
【基本语法】
read [选项] 变量名
【选项】
-p 定义提示用户的信息
-n 限制变量的长度
-s 不显示用户输入的内容
-t 限制用户输入的时间
#用户输入变量
read -p "please input your name: " name
echo -e "your name is : ${name} "
#从文件中导入变量
read -p "请输入IP地址:" IP < ip.txt
3. 定义有类型的变量
【基本语法】
declare 选项 变量名+变量值
【选项解析】
-i 定义整型变量
-r 定义只读变量
-a 定义普通数组
-A 定义关联数组
-x 将变量通过环境导出(等同于export)
#定义整型变量
[root@node1 shell]# declare -i num=12
[root@node1 shell]# echo $num
12
[root@node1 shell]# num=hello
[root@node1 shell]# echo $num
0
[root@node1 shell]#
#定义只读变量
[root@node1 shell]# declare -r varStr=hello
[root@node1 shell]# echo $varStr
hello
[root@node1 shell]# varStr=world
-bash: varStr: readonly variable
#定义环境变量
[root@node1 shell]# declare -x environment=hello world
[root@node1 shell]# env|grep environment
8:environment=hello
4. 变量的类型
本地变量 : 只对当前进程生效
环境变量 : 子进程可调用
全局变量 : 所有用户和进程都可以调用
系统变量 : 内置bash中,无法修改
全局变量相关配置文件:
#当前用户的bash信息 用户登陆的时候读取
$HOME/.bashrc
#当前用户的环境变量 用户登陆的时候读取
$HOME/.bash_profile
#退出当前shell的时候读取
$HOME/.bash_logout
#全局的bash信息 所有用户皆生效
/etc/bashrc
#全局的环境变量信息
/etc/profile
用户登陆系统时的文件读取顺序
/etc/profile
$HOME/.bash_profile
$HOME/.bashrc
/etc/bashrc
$HOME/.bash_logout
其他
1. 查看命令执行成功与否(成功返回0)
$?
2. 查询时间并打印
echo "time: $(date)"
echo "time: $(date + '%F %T')"
3. 在某个文件夹下创建多个目录
mkdir -p /tmp/dir{1..3}
4. 检查是否在线
for((i=0;i<254;i++));do x=`ping 10.42.204.$i -c 1 -w 1 |grep icmp_seq|wc -l`;if [ $x -ne 0 ];then echo "10.42.204.$i online";else echo "10.42.204.$i offline";fi;done
5. iostat
iostat -x 1 -N 2