脚本选项--我们在执行命令时,后边可以跟许多的选项和参数,那么在创建脚本的时候是否也可以在脚本后边跟上不同的选项而执行不同的功能?
目录
处理简单的选项
从参数中分离选项
处理带值的选项
一、处理简单选项
先看下面的一个脚本:
#!/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丢弃一个参数,执行效果如下: