从unix中的命令中提取选项和参数

时间:2015-08-18 10:48:20

标签: shell unix ksh

我正在编写一个脚本,它将拦截我在shell上发出的任何命令(ksh93), 并根据我的要求处理选项和参数。

说,我有script.ksh

./script.ksh
$ rm -rf dir1 dir2

然后我想分别提取r,f和dir1,dir2,以便我可以单独检查每个选项,然后在删除dir1之前再做一些事情,dir2

我想出了以下代码,将选项和参数分成不同的数组:

read INPUT

count=`echo $INPUT | wc -w`
echo $count

command=`echo $INPUT | cut -d' ' -f1`
echo $command

counter=2
indexOptions=0
indexArgs=0
while [ "$counter" -le "$count" ]
do
    word=`echo $INPUT | cut -d' ' -f$counter`

    if [[ "$word" == -* ]]
    then

        options["$indexOptions"]=$word
        ((indexOptions=indexOptions+1))
    else
        args["$indexArgs"]=$word
        ((indexArgs=indexArgs+1))
    fi
    ((counter=counter+1))
done

但我想知道是否有更好的方法或任何其他命令或工具可以用来改善我的方法。

提前致谢。

1 个答案:

答案 0 :(得分:0)

您可以使用getopts。它比getopt更新,恕我直言更好,请参阅a question about getopt进行更多讨论。