当前位置:Linux教程 - Shell - bash, Shell Scripts

bash, Shell Scripts



         众所皆知地,UNIX上以小工具着名,利用许多简单的小工具,来完成原本需要

    大量软体开发的工作,这一点特色,使得UNIX成为许多人心目中理想的系统平

    台。


    在众多的小工具中,Shell Script算得上是最基本、最?nbsp;system is FreeBSD\"

    echo \"Do FreeBSD stuff here...\"

    ;;

    *)

    echo \"Unknown system : $SYSTEM\"

    echo \"I don\t what to do...\"

    ;;

    esac



    select name [ in word; ] do list ; done


    select顾名思义就是在word中选择一项


    范例


    #!/bin/sh


    WORD=\"a b c\"


    select i in $WORD ; do

    case $i in

    a)

    echo \"I am A\"

    ;;

    b)

    echo \"I am B\"

    ;;

    c)

    echo \"I am C\"

    ;;

    *)

    break;

    ;;

    esac

    done


    执行结果


    [foxman@foxman bash]# ./select_demo

    1) a

    2) b

    3) c

    #? 1

    I am A

    1) a

    2) b

    3) c

    #? 2

    I am B

    1) a

    2) b

    3) c

    #? 3

    I am C

    1) a

    2) b

    3) c

    #? 4

    [foxman@foxman bash]#




    if list then list [ elif list then list ] ... [ else list ] fi


    几种可能的写法


    if list then

    do something here

    fi


    if list then

    do something here

    else

    do something else here

    fi


    if list then

    do something here

    elif list then

    do another thing here

    fi


    if list then

    do something here

    elif list then

    do another thing here

    else

    do something else here

    fi










    这里要迁扯到Exit Status的问题,等我将Exit Status的问题说明完再回来继

    续。



    while list do list done/until list do list done


    范例一 : 无限圈写法


    #!/bin/sh


    while : ; do

    echo \"do something here\"

    sleep 5

    done


    范例二














    这里要迁扯到Exit Status的问题,等我将Exit Status的问题说明完再回来继

    续。



    [ function ] name () { list; }


    范例


    function func(arg1,arg2) {

    echo $arg1

    echo $arg2

    return 1

    }


    类同於Pascal中的function。


    bash内建指令集


    . filename [arguments]

    source filename [arguments]


    由filename中读取命令,并执行。

    您会在/etc/rc.d/*中发现很多

    . /xxxx

    的指令,而xxxx的permission都不是可执行的。事实上,在tcsh中,需要用

    source /xxxx

    来做同样的指令。

    注意到\".\"的後面是有空格的。filename是内含指令的纯文字档即可,无须

    chmod 755 filename。


    范例


    filename : my_source


    DEV=lo

    IP=127.0.0.1

    NETMASK=255.0.0.0

    BROADCAST=127.255.255.255


    ifconfig $IP netmask $NETMASK broadcast $BROADCAST dev $DEV


    接下来

    . /path/my_source



    source my_source


    便可执行该script,而不需要\"chmod 755 my_source\"


    alias [name[=value] ...]


     称

    例如您如果来自DOS的世界,对UNIX的指令不习惯,可用alias来修改,以符合

    您的习惯。


    范例


    alias ls=\"ls --color\"

    alias dir=\"ls\"

    alias cd..=\"cd ..\"

    alias copy=\"cp -f\" # dangerous, recommend, cp -i

    alias del=\"rm -f\" # dangerous, recommend, rm -i

    alias move=\"mv -f\" # dangerous, recommend, mv -i

    alias md=\"mkdir\"

    alias rd=\"rmdir\"


    unalias [-a] [name ...]


    unalias取消alias的设定。unalias -a将全部alias取消。


    范例


    unalias copy


    bg [jobspec]

    fg [jobspec]


    jobs [-lnp] [ jobspec ... ]

    jobs -x command [ args ... ]






    kill [-s sigspec | -sigspec] [pid | jobspec] ...

    kill -l [signum]




    wait [n]


    bind [-m keymap] [-lvd] [-q name]

    bind [-m keymap] -f filename

    bind [-m keymap] keyseq:function-name


    break [n]


    控制圈中使用


    范例




    continue [n]


    控制圈中使用


    范例


    exit [n]


    离开程式。n是Exit Status。


    return [n]


    在function中使用。n为返回值,其作用与Exit Status一样。


    builtin shell-builtin [arguments]


    cd [dir]


    command [-pVv] command [arg ...]


    declare [-frxi] [name[=value]]

    typeset [-frxi] [name[=value]]


    dirs [-l] [+/-n]


    echo [-neE] [arg ...]


    enable [-n] [-all] [name ...]


    eval [arg ...]


    exec [[-] command [arguments]]


    export [-nf] [name[=word]] ...

    export -p


    set [--abefhkmnptuvxldCHP] [-o option] [arg ...]


    unset [-fv] [name ...]


    fc [-e ename] [-nlr]&n



    发布人:Crystal 来自:LinuxAid 专业技术支�