变量: 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"