shell 函数参数传递

#位置参数可以超过9个


#shift n每个将参数位置向左偏移n位
#编辑文件
vi opt2
#ne 不等于
#lt 小于
#查看opt2文件内容
[root@localhost 0417]# cat opt2 
#!/bin/bash
#opt2
usage()
{
        echo "usage:`basename $0` filenames"
}
totalline=0
if [ $# -lt 2 ]
then
        usage
        exit
fi
while [ $# -ne 0 ]
do
        line=`cat $1|wc -l`
        echo "$1 : ${line}"
        totalline=$[ $totalline+$line ]
        shift
done
echo "---------"
echo "total:${totalline}"
#拷贝文件
[root@localhost 0417]# cp ../0416/func* .
#改变权限
[root@localhost 0417]# chmod 755 opt2
#执行
[root@localhost 0417]# ./opt2 
usage:opt2 filenames
#执行 加一个参数
[root@localhost 0417]# ./opt2 func
usage:opt2 filenames
#执行 加2个参数 正常统计
[root@localhost 0417]# ./opt2 func func2
func :       9
func2 :       9
---------
total:18




#getopts 获得多个命令行参数
#编辑
vi optgets
#改变权限
[root@localhost 0417]# chmod 755 optgets 
#查看文件内容
[root@localhost 0417]# cat optgets 
#!/bin/bash
ALL=false
HELP=false
FILE=false
VERBOSE=false
while getopts ahfvc 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"
                ;;
        v)
                VERBOSE=true
                echo "VERBOSE is $VERBOSE"
                ;;
        c)
                echo "c value is $c"
                ;;
        \?)
                echo "`basename $0` -[a h f v] -[c value] file "
                ;;
        esac
done
#执行 加参数a
[root@localhost 0417]# ./optgets -a   
ALL is true
#执行 加参数a、h
[root@localhost 0417]# ./optgets -a -h   
ALL is true
HELP is true
#执行 加参数a、h、d。d为未知参数,报错
[root@localhost 0417]# ./optgets -a -h -d
ALL is true
HELP is true
./optgets: illegal option -- d
optgets -[a h f v] -[c value] file 
#执行 加参数a、h、c,c后不加内容
[root@localhost 0417]# ./optgets -a -h -c   
ALL is true
HELP is true
c value is 
##执行 加参数a、h、c,f后加内容,但仍然不打印
[root@localhost 0417]# ./optgets -a -h -c ff
ALL is true
HELP is true
c value is
#重新编辑
vi optgets
#查看
[root@localhost 0417]# cat optgets 
#!/bin/bash
ALL=false
HELP=false
FILE=false
VERBOSE=false
while getopts ahfvc: 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"
                ;;
        v)
                VERBOSE=true
                echo "VERBOSE is $VERBOSE"
                ;;
        c)
 #将传入的参数赋值给c
                c=$OPTARG
                echo "c value is $c"
                ;;
        \?)
                echo "`basename $0` -[a h f v] -[c value] file "
                ;;
        esac
done


#执行 加参数a、h、c,c后加内容ff,发现正常打印
[root@localhost 0417]# ./optgets -a -h -c ff
ALL is true
HELP is true
c value is ff
#执行 加参数a、h、c,c后不加内容,报错
[root@localhost 0417]# ./optgets -a -h -c   
ALL is true
HELP is true
./optgets: option requires an argument -- c
optgets -[a h f v] -[c value] file

你可能感兴趣的:(js/shell/php/内核)