第七章.脚本参数的传递

2011年8月26日 发表评论 阅读评论

开启密码H1N6Yll2
shift命令
shift n 每次将参数位置向左偏移n

#!/bin/bash
#opt2
usage()
{
echo "usage:`basename $0` filename"
}
totalline=0
if [ $# -lt 2 ];then
    usage
fi
while [$# -ne 0]
do
    line=`cat $1|wc -l`
    echo "$1 : ${line}"
    totalline=$[$totalline+$line]
    shift                               #   $# -1
done
echo "-----"
echo "total:${totalline}"

[test@szbirdora 1]$ sh opt2.sh myfile df.out
myfile : 10
df.out : 4
-----
total:14
8.getopts命令
获得多个命令行参数
getopts ahfvc OPTION   --从ahfvc一个一个读出赋值给OPTION.如果参数带有:则把变量赋值给:前的参数--:只能放在末尾。
该命令可以做获得命令的参数
#!/bin/bash
#optgets
ALL=false
HELP=false
FILE=false
while getopts ahf OPTION
do
   case $OPTION in
    a)
      ALL=true
      echo "ALL is $ALL"
      ;;
    h)
      HELP=true
      echo "HELP is $HELP"
      ;;
    f)
      FILE=true
      echo "FILE is $FILE"
      ;;
    ?)
      echo "`basename $0` -[a h f] file"
      ;;
    esac
done

[test@szbirdora 1]$ sh optgets.sh -a -h -m
ALL is true
HELP is true
optgets.sh: illegal option -- m
optgets.sh -[a h f] file

getopts表达式:
while getopts p1p2p3... var    do
    case var in
    ..)
    ....
   esac
done
如果在参数后面还需要跟自己的参数,则需要在参数后加:
如果在参数前面加:表示不想将错误输出
getopts函数自带两个跟踪参数的变量:optind,optarg
optind初始值为1,在optgets处理完一次命令行参数后加1
optarg包含合法参数的值,即带:的参数后跟的参数值

 至此,基础部分先告一段落,接下来我会继续发行shell的高级编程部分。

 




本站的发展离不开您的资助,金额随意,欢迎来赏!

You can donate through PayPal.
My paypal id: itybku@139.com
Paypal page: https://www.paypal.me/361way

分类: shell脚本学习 标签: , ,
  1. 小雨
    2011年8月27日15:29 | #1

    谢谢!