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

Extract options and arguments from a command in unix

我正在编写一个脚本,它将拦截我在 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

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

提前致谢。

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