码迷,mamicode.com
首页 > 其他好文 > 详细

脚本中如何加入选项

时间:2018-02-12 22:18:54      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:str   处理   需要   目录   $@   process   break   echo   type   

脚本选项--我们在执行命令时,后边可以跟许多的选项和参数,那么在创建脚本的时候是否也可以在脚本后边跟上不同的选项而执行不同的功能?


目录

  • 处理简单的选项

  • 从参数中分离选项

  • 处理带值的选项


一、处理简单选项

先看下面的一个脚本:

#!/bin/bash
while [ -n "$1" ]
do
    case "$1" in
    -a) echo -a option ;;
    -b) echo -b option ;;
    -c) echo -c option ;;
    *) echo nothing ;;
    esac
    shift
done

由于shift移位命令,无论脚本后边跟多少个选项,都将第一个参数的形式传给脚本,所以执行的效果如下:

技术分享图片



二、从参数中分离选项

执行脚本的时候,有时候既需要选项,也需要参数,这就要把选项和参数区分开。

#!/bin/bash
while [ -n "$1" ]
do
    case "$1" in
    -a) echo -a option;;
    -b) echo -b option;;
    --) shift
        break;;
    *) echo nothing;;
    esac
    shift
done
for param in "$@"
do
    echo this param is "$param"
done

这个脚本中 -- 作为选项和参数的分割,为了避免shell把 -- 也当做参数来处理,需要在break前加shift把最后一个选项的值丢弃。执行效果如下:

技术分享图片


三、处理带值的选项

有些时候选项也是需要带参数的,这需要让脚本知道什么选项后边应该跟参数

#!/bin/bash
while [ -n "$1" ]
do
    case "$1" in
    -a) echo a option;;
    -b) param="$2"
        echo b option with $param
        shift;;
    --) shift
        break;;
    *) echo nothing;;
    esac
    shift
done
for param in "$@"
do
    echo this is $param
done

-b选项后边需要跟参数赋值给$2,然后需要shift丢弃一个参数,执行效果如下:

技术分享图片



脚本中如何加入选项

标签:str   处理   需要   目录   $@   process   break   echo   type   

原文地址:http://blog.51cto.com/13570193/2071424

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!