CMD
使用linux的命令时,经常会用man来查询可选参数及其含义。偶尔我们也会开发自己的小工具。
如何给小工具快速添加可选参数呢?
java
java的开发者应该是更喜欢使用配置文件的方式来与程序交互,无论是property还是yml。
在参数不是特别多时,cmd的params也是不错的选择。提到给java传参数,大多数人一定是会
想到main函数的args数组,这是基础,但不太方便。
推荐使用commons-cli,能够设定长短参数(-i 或 –interval),还能添加注解。
具体的方法我就不展开讲了,网上能搜到很多。
getopt(s)
shell中最普遍的解决办法就是getopt,配合while case处理输入的参数。
while getopts 'h:j:m:u' OPT;do
case $OPTin
j) S_DIR="$OPTARG";;
m) D_DIR="$OPTARG";;
u) upload="true";;
h) func;;
?) func;;
esac
done
如何你想实现tab自动提示的话,可以了解一下_get_comp_words_by_ref。
shell默认的参数处理
$0 : 脚本名
$N : 第N个参数.
$# : 参数的个数,不包括命令本身.
$@ : 参数本身的列表,也不包括命令本身,如上例为 -v -f -out /test.log –prefix=/home
$* : 参数本身的列表,也不包括命令本身,但”$*” 和”\$@”(加引号)并不同,”$*“将所有的参数解释成一个字符串,而”$@”是一个参数数组。
这种处理方法没有getopt简洁,一般还是推荐使用getopt。但是下面这个特殊用法需要注意一下。
"${@:2}" 从第二参数开始往后的所有参数