变量说明: 

$$ 
Shell本身的PID(ProcessID) 
$! 
Shell最后运行的后台Process的PID 
$? 
最后运行的命令的结束代码(返回值) 
$- 
使用Set命令设定的Flag一览 
$* 
所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。 
$@ 
所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。 
$# 
添加到Shell的参数个数 
$0 
Shell本身的文件名 
$1~$n 
添加到Shell的各参数值。$1是第1参数、$2是第2参数…。

整数运算

i=`expr $i + 1`
i=$(expr $i + 1)
let i+=1
let i++
((i++))
i=$[$i+1]
i=$(( $i + 1 ))
浮点运算
echo "4 * 0.56" | bc
echo "11 * 1.5" | bc
echo "scale=2; 3/8" | bc  #小数点后保留两位
echo "obase=2;$A" |bc    #将数字$A 转化成2进制输出
echo "obase =10;ibase=2;$A" | bc    #将$A先转化成二进制,然后转化成10进制输出
echo "sqrt(100)"| bc   #100平方根
echo "100^2" | bc   #100的平方

逐行读取文件

1、
while read LINE
do
    echo $LINE
done  < $FILENAME

2、

cat $FILENAME | while read LINE
do
    echo $LINE
done

数组(array)

array=(aa bb cc dd) #赋值

array=( [1]=aa [2]=bb [3]=cc [4]=dd )
unset array[1]    #删除数组中第一个元素
unset array    #删除整个数组
num=${#array[@]}    #获取数组元素的个数
length=${#array[i]}    #获取数组某一个单元的长度
${array[*]}    #获取数组的所有元素
${array[@]:1}    #bb cc dd,除掉第一个元素后所有元素,那么${array[@]:0}表示所有元素
${array[@]:0:2}    #aa bb
${array[@]:1:2}    #bb cc  

#遍历数组

#1
for ((i=0;i<num;i++))
{
    echo   $array[i]
}
#2
for var in  ${array[*]}
do
    echo $var;
done
// ${#var}       获取数组某一个单元的长度
len=${#str}  #字符长度