我正在尝试编写一个可以同时使用${1}和getopts选项的脚本。我希望使用用法行来运行它:
./test_script test -a要打印,请执行以下操作:
test
-a was triggered!我试过了
echo ${1};
while getopts "c:a" opt; do
case $opt in
a)
echo "-a was triggered!" >&2
;;
\?)
echo "Invalid option: -$OPTARG" >&2
;;
esac
done它无法让我同时访问${1}和检测到同时使用了-a选项。有没有办法同时使用这两种方法?我希望避免将测试字符串转换为另一个getopts选项。
发布于 2013-07-16 22:42:43
当getopts退出时,您可以使用shift。例如:
while [ $# -gt 0 ] ; do
while getopts "c:a" opt ; do
case $opt in
# YOUR OPTIONS
esac
done
OTHER_VALUE=$1
shift
donePS:我通常不使用getopts,但我更喜欢自己解析参数,如下所示:
while [ $# -gt 0 ] ; do
case "$1" in
'-a' | '--along' )
echo '-a was triggered' ;;
'-b' | '--blong' )
echo '-b was trigger with arg ' $2 ;
shift ;; # One extra shift for the argumnent $2
* )
echo 'Unknown value (maybe test)' ;;
esac
shift
donehttps://stackoverflow.com/questions/17678232
复制相似问题