我正在编写此命令的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 ='。
它也不起作用,我该怎么办?谢谢〜
答案 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