我查看了一些类似的问题,但它们对我来说不太合适。
我有一个很棒的bash脚本,可以执行一些很酷的功能,这是代码的相关部分:
while getopts ":hhelpf:d:c:" ARGS;
do
case $ARGS in
h|help )
help_message >&2
exit 1
;;
f )
F_FLAG=1
LISTEXPORT=$OPTARG
;;
d )
D_FLAG=1
OUTPUT=$OPTARG
;;
c )
CLUSTER=$OPTARG
;;
\? )
echo ""
echo "Unimplemented option: -$OPTARG" >&2
echo ""
exit 1
;;
: )
echo ""
echo "Option -$OPTARG needs an argument." >&2
echo ""
exit 1
;;
* )
help_message >&2
exit 1
;;
esac
done
现在,如果触发了所有选项,则我的所有选项都很好用。我想要的是当没有触发任何选项时,getopts会输出 help_message function ,比如只使用 ./scriptname.sh 启动脚本而没有参数。
我看到这里有一些方法,实现 IF 循环和函数,但是,由于我刚开始学习bash,并且在此脚本中已经有一些IF循环,我想知道是否有更简单(并且漂亮)的方法来解决这个问题。
getopts
字符串中的help
并没有做你期望它做的事情。getopts
不支持长选项。应该将选项e
、l
和p
添加到该调用中。 - Etan Reisnerhelp
正常工作。 - Omarh|help
案例块中插入一个echo case h
,在*
案例中插入一个echo 'case *'
,然后尝试使用script --help
(然后是script -l
),看看会得到什么。同时也可以使用长选项script --help
。 - Etan Reisnerecho
行得到什么输出。你将得到意料之外的结果。 - Etan Reisner