我解析了一些类似的问题,但这些问题并不适合我.
我有这个很棒的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
Run Code Online (Sandbox Code Playgroud)
现在,如果触发,我的所有选项都运行良好.我想要的是getopts 在没有触发选项时吐出help_message函数,比如脚本只是在没有参数的情况下启动./scriptname.sh.
我在这里看到了一些方法,实现了IF循环和函数,但是,因为我刚开始使用bash并且我已经在这个脚本上有一些IF循环,我想知道是否有一种更简单(和漂亮)的方法来这个.
Eta*_*ner 11
如果您只想检测没有选项的被调用脚本,那么只需检查$#
脚本中的值,并在它为零时退出.
如果你想捕获没有传递选项参数的情况(但是非选项参数)仍然传递,那么你应该能够检查循环OPTIND
之后的值getopts
并在它为1时退出(表示第一个参数是一个非选项参数).
非常感谢 Etan Reisner,我最终使用了您的建议:
if [ $# -eq 0 ];
then
help_message
exit 0
else
...... remainder of script
Run Code Online (Sandbox Code Playgroud)
这完全按照我的想法工作。谢谢。
归档时间: |
|
查看次数: |
9776 次 |
最近记录: |