是否可以为 bash 脚本实现子命令。我有这样的想法:
http://docs.python.org/dev/library/argparse.html#sub-commands
最佳答案
这是一个简单的不安全技术:
#!/bin/bash
clean() {
echo rm -fR .
echo Thanks to koola, I let you off this time,
echo but you really shouldn\'t run random code you download from the net.
}
help() {
echo Whatever you do, don\'t use clean
}
args() {
printf "%s" options:
while getopts a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:p:q:r:s:t:u:v:w:x:y:z: OPTION "$@"; do
printf " -%s '%s'" $OPTION $OPTARG
done
shift $((OPTIND - 1))
printf "arg: '%s'" "$@"
echo
}
"$@"
这一切都非常酷,但它并没有限制子命令可以是什么。因此,您可能希望将最后一行替换为:
if [[ $1 =~ ^(clean|help|args)$ ]]; then
"$@"
else
echo "Invalid subcommand $1" >&2
exit 1
fi
某些系统允许您在子命令之前放置“全局”选项。如果需要,您可以在子命令执行之前放置一个
getopts
循环。在陷入子命令执行之前记得shift
;此外,将 OPTIND
重置为 1,以便子命令 getopts 不会混淆。关于bash - 带有 bash 的子命令,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13638248/