linux 命令详解 二十四

  11.  数组:

    Shell中提供了创建一维数组的能力,你可以把一串数字、名字或者文件放在一个变量中。使用declare-a选项即可创建它们,或者在变量后面增加下标操作符直接创建。和很多其它开发语言一样,Shell中的数组也是0开始的,然而不同的是Shell中数组的下标是可以不连续的。获取数组中某个元素的语法格式为${arrayname[index]}。见如下示例:
    /> declare -a friends                   #声明一个数组变量
    /> friends=(sheryl peter louise)   #给数组变量赋值
    /> echo ${friends[0]}                #通过数组下标的方式访问数组的元素
    sheryl
    /> echo ${friends[1]}
    peter
    /> echo ${friends[2]}
    louise
    /> echo ${friends[*]}                #下标中星号表示所有元素。
    shery1 peter louise
    # 
${#array[*]}表示数组中元素的数量,而${#friend[0]}则表示第一个元素的长度。
    /> echo ${#friends[*]}    
    3
    /> unset friends                         #unset array清空整个数组,unset array[index]仅清空指定下标的元素。

    /> x[3]=100
    /> echo ${x[*]}
    100
    /> echo ${x[0]}                        #0下标的元素并没有被赋值过,因为输出为空。

    /> echo ${x[3]}
    100
    /> states=(ME [3]=CA [2]=CT)   #ME的下标为0
    /> echo ${states[0]}
    ME
    /> echo ${states[1]}                 #数组下标为1的位置没有被赋值过,因此没有输出。

    /> echo ${states[2]}
    CT
    /> echo ${states[3]}
    CA

    12.  函数:
    
C语言一样,Shell中也可以创建自己的自定义函数。其格式如下:
    function_name () { commands; commands; }
    function function_name { commands; commands; }
    function function_name () { commands; commands; }
    
函数的参数在函数内是以$[0-9]${10}...,这种局部变量的方式来访问的。见下面的示例:

    #函数的左花括号和命令之间必须有至少一个空格。每个命令的后面都要有一个分号,即便是最后一个命令
    /> function greet { echo "Hello $LOGNAME, today is $(date)"; }
    #
此时函数已经驻留在当前的bash shell中,因此使用函数效率更高。
    /> greet   
    Hello root, today is Fri Nov 18 20:45:10 CST 2011
    /> greet() { echo "Hello $LOGNAME, today is $(date)"; }
    /> greet
    Hello root, today is Fri Nov 18 20:46:40 CST 2011
    #welcome
函数内部使用了函数参数。
    /> function welcome { echo "Hi $1 and $2"; }
    /> welcome stephen jane    
    Hi stephen and jane
    #declare -F
选项将列出当前Shell中驻留的函数
    /> declare -F
    declare -f greet
    declare -f welcome
    #
清空指定的函数,使其不在Shell中驻留。
    /> unset -f welcome

        13.  重定向:

    下面的列表为Shell中支持的重新定向操作符。

操作符

功能

<  

重新定向输入

>  

重新定向输出

>>  

追加输出

2>

重新定向错误

&>

重新定向错误和输出

>&

重新定向错误和输出

2>&1

重新定向错误到标准输出

1>&2

重新定向标准输出到错误

>|

重新定向输出的时候覆盖noclobber选项


    #find
命令将搜索结果输出到foundit文件,把错误信息输出到/dev/null
    /> find . -name "*.c" -print > foundit 2> /dev/null
    #
find命令的搜索结果和错误信息均输出到foundit文件中。
    /> find . -name "*.c" -print >& foundit
    #
同上。
    /> find . -name "*.c" -print > foundit 2>&1
    #echo
命令先将错误输出到errfile,再把信息发送到标准错误,该信息标准错误与标准输出合并在一起(errfile)
    /> echo "File needs an argument" 2> errfile 1>&2

    C语言一样,Shell中也可以创建自己的自定义函数。其格式如下:
    function_name () { commands; commands; }
    function function_name { commands; commands; }
    function function_name () { commands; commands; }
    
函数的参数在函数内是以$[0-9]${10}...,这种局部变量的方式来访问的。见下面的示例:

    #函数的左花括号和命令之间必须有至少一个空格。每个命令的后面都要有一个分号,即便是最后一个命令
    /> function greet { echo "Hello $LOGNAME, today is $(date)"; }
    #
此时函数已经驻留在当前的bash shell中,因此使用函数效率更高。
    /> greet   
    Hello root, today is Fri Nov 18 20:45:10 CST 2011
    /> greet() { echo "Hello $LOGNAME, today is $(date)"; }
    /> greet
    Hello root, today is Fri Nov 18 20:46:40 CST 2011
    #welcome
函数内部使用了函数参数。
    /> function welcome { echo "Hi $1 and $2"; }
    /> welcome stephen jane    
    Hi stephen and jane
    #declare -F
选项将列出当前Shell中驻留的函数
    /> declare -F
    declare -f greet
    declare -f welcome
    #
清空指定的函数,使其不在Shell中驻留。
    /> unset -f welcome

    13.  重定向:
    
下面的列表为Shell中支持的重新定向操作符。                                           

 

操作符

功能

<  

重新定向输入

>  

重新定向输出

>>  

追加输出

2>

重新定向错误

&>

重新定向错误和输出

>&

重新定向错误和输出

2>&1

重新定向错误到标准输出

1>&2

重新定向标准输出到错误

>|

重新定向输出的时候覆盖noclobber选项

 


    #find
命令将搜索结果输出到foundit文件,把错误信息输出到/dev/null
    /> find . -name "*.c" -print > foundit 2> /dev/null
    #
find命令的搜索结果和错误信息均输出到foundit文件中。
    /> find . -name "*.c" -print >& foundit
    #
同上。
    /> find . -name "*.c" -print > foundit 2>&1
    #echo
命令先将错误输出到errfile,再把信息发送到标准错误,该信息标准错误与标准输出合并在一起(errfile)
    /> echo "File needs an argument" 2> errfile 1>&2
    /> cat errfile
 

你可能感兴趣的:(linux,职场,休闲)