linux学习之shell脚本

http://blog.csdn.net/jesson20121020]

今天再来看一下如何向shell脚本传递参数,需要掌握两个命令,一个是 shift命令,另一个是getopts。

脚本参数传递  shift命令

   用法:

    shift n 每次将参数位置向左偏移n位

   假如我们要实现统计多个文件的总行数,就可以用到这个shift命令了,如下:

opt2.sh

#!/bin/bash#op2  static files total lines;staticlines(){   echo "static:`basename $0` filenames"   exit}totalline=0if [ $# -lt 2 ]then    staticlinesfiwhile [ $# -ne 0 ]do    line=`cat $1 | wc -l`    echo "$1:${line}"    totalline=$[ $totalline+$line ]    shiftdoneecho "-------------------------------------"echo "totalline:${totalline}"

   给予可执行权限,执行:

jesson@jesson-K43SV:~/develop/worksapce/shell_workspace$ chmod a+rx opt2.sh jesson@jesson-K43SV:~/develop/worksapce/shell_workspace$ ./opt2.sh static:opt2.sh filenamesjesson@jesson-K43SV:~/develop/worksapce/shell_workspace$ ./opt2.sh lsout.txtstatic:opt2.sh filenamesjesson@jesson-K43SV:~/develop/worksapce/shell_workspace$ ./opt2.sh lsout.txt name.txt lsout.txt:18name.txt:4-------------------------------------totalline:22jesson@jesson-K43SV:~/develop/worksapce/shell_workspace$ ./opt2.sh lsout.txt name.txt while_test1.sh lsout.txt:18name.txt:4while_test1.sh:6-------------------------------------totalline:28

   通过shift 命令,我们可以很容易地实现统计log等信息。  getopts命令

   该命令可以获得多个命令行参数。

   还是一个脚本来分析getopts的用法

optsget.sh

#!/bin/bash#optsgetALL=falseHELP=falseFILE=falseVERBOSE=falsewhile getopts ahfvc: OPTIONdo     case $OPTION in     a)         ALL=true         echo "ALL is $ALL"         ;;     h)         HELP=true         echo "HELP is $HELP"         ;;     f)         FILE=true         echo "FILE is $FILE"         ;;     v)          VERBOSE=true         echo "VERBOSE is $VERBOSE"         ;;     c)         c=$OPTARG         echo "c valuse is $c"         ;;     \?)         echo "`basename $0` -[a h f v] -[c value]"         ;;      esacdone

   给予可执行权限,执行结果如下:

jesson@jesson-K43SV:~/develop/worksapce/shell_workspace$ ./optsget.sh -aALL is truejesson@jesson-K43SV:~/develop/worksapce/shell_workspace$ ./optsget.sh -a -fALL is trueFILE is truejesson@jesson-K43SV:~/develop/worksapce/shell_workspace$ ./optsget.sh -a -f -hALL is trueFILE is trueHELP is truejesson@jesson-K43SV:~/develop/worksapce/shell_workspace$ ./optsget.sh -a -f -h -vALL is trueFILE is trueHELP is trueVERBOSE is truejesson@jesson-K43SV:~/develop/worksapce/shell_workspace$ ./optsget.sh -a -f -cALL is trueFILE is true./optsget.sh: 选项需要一个参数 -- coptsget.sh -[a h f v] -[c value]jesson@jesson-K43SV:~/develop/worksapce/shell_workspace$ ./optsget.sh -a -f -c jessonALL is trueFILE is truec valuse is jesson

  不难看出,可以通过getopts命令取得多个参数,而且还可以为每个参数指定值,在需要指定值的参数后加:即可。

不要忘本,任何时候,任何事情。

linux学习之shell脚本

相关文章:

你感兴趣的文章:

标签云: