变量: PATH 环境变量 SHELL 当前shell UID 用户的UID
GID 用户的GID USER 用户名 $1..$9 位置参数 $# 位置参数的个数 $* 所有的位置参数(作为单个字符串) $@ 所有的位置参数(每个
都作为独立的字符串) LANG 当前系统语言设置变量 RANDOM 可取出随机数
弱引用“” 把大部分字符都看作普通字符,例外的有\,$,`三个特殊字符
* 匹配任意长度的任意字符 ?匹配任意单个字符 [] 匹配指定范围内的任意单个字符 几种特殊格式:[a-z] 任意单个字母 [0-9] 任
意单个数字 [a-z0-9] 任意一个数字或字母
[:upper:] 大写字母 [:lower:] 小写字母
定义一个环境变量:declare -x var_name=value 或者 export var_name=value
定义一个整形变量 declare -i var_name=value
+=,-=,*=,/=,%=都需要使用let命令进行描述 比如let var+=1 let var++
定义一个变量: mypath="/etc/sysconfig/network-scripts/"
echo ${mypath:5} 偏移5个字符显示
echo ${mypath:5:5} 偏移5个字符,取5个字符
echo ${mypath: -10} 取出最后10个字符
判断字符串是否相等:[[ "$mypath" == "kk" ]] ==两边都要有空格,而且字符都要用引号引起来
判断指定的字串是否为空 [[ -z "$mypath" ]] 为空则为真,不空则为假
[[ -n "$mypath" ]] 判定指定的字串,为空为假,不空为真
[ -e /etc/sysconfig ] 判定一个文件是否存在 -a和-e是一个意思,类似的还有-d 是否存在并且为目录 -f 是否存在并且为普通文件 -r文
件存在并且可读 -s文件存在且不为空 -w文件存在且可写 -x文件存在且可执行
while 的特殊用法之遍历文件的行:while read i;do echo $i; done < /etc/passwd
定义一个函数: f_name () {..函数体..} 注意在函数中尽量用local来定义变量
数组:存储多个元素的连续的内存空间,整个数组只有一个名字
数组索引:编号从0开始 ${ARRAY_name[INDEX]}
声明数组:declare -a NAME
一次只赋值一个元素:NAME[0]=jerry NAME[1]=bob
一次赋值全部元素:NAME=("val1" "val2" "val3")
只赋值特定元素:NAME=([0]="VAL1" [3]="VAL3")
引用数组中的元素:${ARRAY_NAME[INDEX]}, 注意:引用时,只给数组名。表示引用小标为0的元素
数组的长度(数组中元素的个数): ${#ARRAY_NAME[*]} 或者 ${#ARRAY_NAME[@]}
取十个随机数的最大值
#!/bin/bash
declare -a rand
declare -i max=0
for i in {0..9}; do
rand[$i]=$RANDOM
echo ${rand[i]}
[ ${rand[$i]} -gt $max ] && max=${rand[$i]}
done
echo "MAX: $max"