shell命令行参数解析工具:getopts
shell命令行参数解析工具:getopts在 #!/bin/bash SOFT_DIR=$1 MAVEN_DIR=$2 echo $SOFT_DIR echo $MAVEN_DIR ----------------- $ sh test.sh /home/soft /home/soft/maven /home/soft /home/soft/maven 但是,如果你的脚本参数非常多,那使用上面的这种方式就非常不合适,你无法清楚地记得每个位置对应的是什么参数。所以,我们可以使用 #!/bin/bash usage() { echo "Usage:" echo " test.sh [-j JAVA_DIR] [-m MAVEN_DIR]" echo "Description:" echo " JAVA_DIR,the path of java." echo " MAVEN_DIR,the path of maven." exit -1 } upload="false" while getopts 'h:j:m:u' OPT; do case $OPT in j) JAVA_DIR="$OPTARG";; m) MAVEN_DIR="$OPTARG";; u) upload="true";; h) usage;; ?) usage;; esac done echo $JAVA_DIR echo $MAVEN_DIR echo $upload --------------------------- $ sh test.sh -j /home/soft/java -m /home/soft/maven /home/soft/java /home/soft/maven false $ sh test.sh -j /home/soft/java -m /home/soft/maven -u /home/soft/java /home/soft/maven true $ sh test.sh -h test.sh: option requires an argument -- h Usage: test.sh [-j JAVA_DIR] [-m MAVEN_DIR] Description: JAVA_DIR,the path of java. MAVEN_DIR,the path of maven.
当选项参数识别完成以后,我们就能识别剩余的参数了,我们可以使用 #!/bin/bash usage() { echo "Usage:" echo " test.sh [-j JAVA_DIR] [-m MAVEN_DIR]" echo "Description:" echo " JAVA_DIR,the path of maven." exit -1 } upload="false" echo $OPTIND while getopts 'j:m:u' OPT; do case $OPT in j) JAVA_DIR="$OPTARG";; m) MAVEN_DIR="$OPTARG";; u) upload="true";; h) usage;; ?) usage;; esac done echo $OPTIND shift $(($OPTIND - 1)) echo $1 --------------- $ sh test.sh -j /home/soft/java -m /home/soft/maven otherargs 1 5 otherargs sh test.sh -j /home/soft/java -m /home/soft/maven -u otherargs 1 6 otherargs 在上面的脚本中,我们位移的长度等于case循环结束后的 以上就是对 原文链接https://segmentfault.com/a/11... (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |