第一部分 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


 

附图

 

 

 

 

 

katoonSina  CSDN
@Wentasy 博文仅供参考,欢迎大家来访。如有错误之处,希望批评指正。原创博文如需转载请注明出处,谢谢 :) [CSDN博客]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值