将 getopts 与无开关路径一起使用
Using getopts with a switchless path
我正在尝试使用 getopts
编写一个简短的脚本。我希望它采用可选开关,或者只是作为默认值运行。我有一个 -d
开关来启用调试,我希望每个其他参数都是一条路径。理想的命令行看起来是这样的,路径是可选的,理论上是无限的:
[=3=] [-d] [/path1[ /path2[ ...]]]
我目前正在使用 getopts
,如下所示:
while getopts ":d" opt; do
case $opt in
d)
DEBUG=true
;;
h)
echo USAGE: [==] \[-d\] \[\/mount\/point\/1 ...\]
exit 0
;;
\?)
echo Incorrect syntax
;;
esac
done
我可以在 while getopts
部分和 case
集中放置什么,以允许输入所需的路径?
您不需要在循环中或 getopts
调用任何东西。 getopts
在第一个非选项处停止。
在你的循环之后,你所有的路径仍然在可用的位置参数中。
此外,您的 getopts
字符串中没有 h
,因此它无效。
我正在尝试使用 getopts
编写一个简短的脚本。我希望它采用可选开关,或者只是作为默认值运行。我有一个 -d
开关来启用调试,我希望每个其他参数都是一条路径。理想的命令行看起来是这样的,路径是可选的,理论上是无限的:
[=3=] [-d] [/path1[ /path2[ ...]]]
我目前正在使用 getopts
,如下所示:
while getopts ":d" opt; do
case $opt in
d)
DEBUG=true
;;
h)
echo USAGE: [==] \[-d\] \[\/mount\/point\/1 ...\]
exit 0
;;
\?)
echo Incorrect syntax
;;
esac
done
我可以在 while getopts
部分和 case
集中放置什么,以允许输入所需的路径?
您不需要在循环中或 getopts
调用任何东西。 getopts
在第一个非选项处停止。
在你的循环之后,你所有的路径仍然在可用的位置参数中。
此外,您的 getopts
字符串中没有 h
,因此它无效。