如何在linux shell命令参数中获得下一个参数?

时间:2017-07-05 05:32:54

标签: linux shell

我正在编写此命令的shell脚本:

ovs-dump -i dpdkb2 [-d in] [-p tcp] [host 192.168.102.2][port 80] [-w /test.pcap]

对于' -w'选项,我想处理' /test.pcap'进入' $ PWD / test.pcap',所以我写这样的脚本:

for arg
do
    case $arg in              
        -h | --help)
            ...
            ;;
        -w )
            echo "OPTARG=$OPTARG"
            ;;
        ?)
            ;;
    esac
done

正如我们所见,我想得到' /test.pcap' by' $ OPTARG',但没有。所以我的问题是如何获得' test.pcap'在我的脚本?

当我使用' getopts'像这样:

while getopts "w:h:" arg
    do
        case $arg in              
            -h | --help)
                ...
                ;;
            -w )
                echo "OPTARG=$OPTARG"
                ;;
            ?)
                ;;
        esac
    done

当我运行sh ovs-dump -w a.pcap时,我收到错误:' / usr / local / share / openvswitch / scripts / gangyewei-ovs-dump:第68行:-w:命令未找到'。

' echo" OPTARG = $ OPTARG"'是' OPTARG ='。

它也不起作用,我该怎么办?谢谢〜

1 个答案:

答案 0 :(得分:1)

您可以将脚本设为:

OPTIND=-1   # rest OPTIND if it has been set earlier

# start getopts loop
while getopts "w:h:" arg; do
    case $arg in
        h | --help)
            ...
        ;;
        w)
            echo "OPTARG=$OPTARG"
        ;;
        ?)

        ;;
    esac;
done

然后将其运行为:

bash ./ovs-dump -w a.pcap