我知道我可以在 bash 中轻松获得这样的定位参数:
$0要么$1
$0
$1
我希望能够使用这样的标志选项来指定每个参数的用途:
mysql -u user -h host
通过标志而不是位置获得-u param价值和价值的最佳方法是什么?-h param
-u param
-h param
这是我常用的成语:
while test $# -gt 0; do case "$1" in -h|--help) echo "$package - attempt to capture frames" echo " " echo "$package [options] application [arguments]" echo " " echo "options:" echo "-h, --help show brief help" echo "-a, --action=ACTION specify an action to use" echo "-o, --output-dir=DIR specify a directory to store output in" exit 0 ;; -a) shift if test $# -gt 0; then export PROCESS=$1 else echo "no process specified" exit 1 fi shift ;; --action*) export PROCESS=`echo $1 | sed -e 's/^[^=]*=//g'` shift ;; -o) shift if test $# -gt 0; then export OUTPUT=$1 else echo "no output dir specified" exit 1 fi shift ;; --output-dir*) export OUTPUT=`echo $1 | sed -e 's/^[^=]*=//g'` shift ;; *) break ;; esac done
要点是:
$#