脚本中如何加入选项

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了脚本中如何加入选项相关的知识,希望对你有一定的参考价值。

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


目录

  • 处理简单的选项

  • 从参数中分离选项

  • 处理带值的选项


一、处理简单选项

先看下面的一个脚本:

#!/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 "[email protected]"
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 "[email protected]"
do
    echo this is $param
done

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

技术分享图片



以上是关于脚本中如何加入选项的主要内容,如果未能解决你的问题,请参考以下文章

如何隐藏片段中首选项之间的分隔符

Unity中timeline出现脚本错误怎么解决

ASP.net MVC 代码片段问题中的 Jqgrid 实现

如何在 Toad for Oracle 中使用自定义代码片段?

删除选项卡时在 ActionBar 选项卡片段中运行代码

如何将按钮功能添加到片段中