宇宙初开,天地未分,阴阳合一,无极生太极,太极生两仪。两仪分阴阳,阴阳合太极,太极复混沌。混沌是宇宙力量的本源


退出脚本


     我们还可以用一种更优雅的方式来完成,为了向shell表明,命令已经处理完毕,每条运行在shell中的命令都使用一个退出状态,这个退出状态,必须


在这条命令运行完成之后立即查看或使用变量$? 它会改变为shell执行的最后一条命令的退出状态值,无效命令返回的退出状态值为127.对于linux的错误退出。


     按照惯例,一条命令成功完成的退出状态是0.如果命令执行错误,那么退出状态就会是一个正整数。


     0   命令成功完成

     1   通常的未知错误

     2   误用shell命令

     126  命令无法执行

     127  没有找到命令

     128  无效的退出参数

    128+x  使用linux信号x的致命错误

     130    使用ctrl+c终止的命令


     $0:shell名

     $1:$1是传递给该shell脚本的第一个参数

     #${test#123abc}删除从左到右边的123abc

     ${test#1*c}删除从左到右边删除最长匹配

     touch{1,2}=touch 1 ;touch 2

     cp file{,.back}

位置参数

$*

所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。


$@

所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。


数组的使用



一。

Bash中,数组变量的赋值有两种方法:


  (1) name = (value1 ... valuen) 此时下标从0开始


  (2) name[index] = value


      a=('echo"$@"')   定义数组

       ${a[$i]}        引用数组元素

$[$i+1]         引用变量数学计算

       echo -n  显示换行

        ${a[1]}         引用数组元素

  下面以一个简单的脚本来说明,脚本内容如下:


  #!/bin/bash


  #定义数组


  A=(a b c def)


  #把数组按字符串显示输出


  echo ${A[@]}


  #屏幕显示:a b c def


  #数组的长度表示${#A[*]}


  len=${#A[*]}


  echo ${#A[*]}


  #屏幕显示:4


  #改变数组元素的值


  A[3]='vivian'


  echo ${A[*]}


  #屏幕显示:a b c vivian


  #循环输出数组元素


  i=0


  while [ $i -lt $len ]


  do


  echo ${A[$i]}


  let i++


  done


  #屏幕输出:


  #      a


  #       b


  #      c


  #     vivian


  #循环输出数组元素的另一种写法,注意,在条件中,引用变量一定要用双引号 ,否则报错


  for (( j=0; j<"$len"; j=j+1 ))


  do


  echo ${A[$j]}


  done


  #循环输出数组元素的另一种写法,注意,${A[*]}不能写成$A ,$A默认是第一个元素,如果A="a b c ded",就可以写$A


  for value in ${A[*]}


  do


  echo $value


  done


二。



定义


可以整体定义数组:

ARRAY_NAME=(value0 value1 value2 value3 ...)

或者:

ARRAY_NAME=(

value0

value1

value2

value3

...

)

此时数组的下标默认是从0开始的


还可以单独定义数组的各个分量:

ARRAY_NAME[0]=value0




ARRAY_NAME[1]=value1

ARRAY_NAME[n]=valuen

...

可以不使用连续的下标,而且下标的范围没有限制。



使用


取得数组中的元素:

valuen=${ARRAY_NAME[n]}


取得数组的全部元素:

一次性将数组中所有元素的值得到:

echo ${ARRAY_NAME[@]}


取得数组元素的个数:

length=${#ARRAY_NAME[@]}

或者

length=${#ARRAY_NAME[*]}


取得数组单个元素的长度:

lengthn=${#ARRAY_NAME[n]}



遍历


使用while循环遍历数组:

i=0

length=${#ARRAY_NAME[*]}

while [ $i -lt $length ] ; do

valuei=${ARRAY_NAME[$i]}

...

let i++

done


使用for循环遍历数组:

for value in ${ARRAY_NAME[*]} ; do

valuei=value

...

done



清空


清空单个元素:

ARRAY_NAME[n]=


将整个数组清空:

unset ARRAY_NAME

或者:

ARRAY_NAME=

应该注意unset后的变量不应该加$。

加$会清空以ARRAY_NAME的值为名称的变量。