我正在编写此命令的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
如我们所见,我想通过'$ OPTARG'获取'/test.pcap',但是没有。所以我的问题是如何在脚本中获取“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:未找到命令”。而回显“OPTARG = $ OPTARG”的输出为“OPTARG =”。
这也行不通,我该怎么办?谢谢〜
最佳答案
您可以这样编写脚本:
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
关于linux - 如何在Linux Shell命令参数中获取下一个参数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44917687/