<aside> 💡 针对一些脚本的传参 使用-a -b -c 而不是仅仅使用顺序

</aside>

传入参数有3种方式

手工处理

<aside> 💡 根据传入的位置定义参数的值,跟位置要求很高,一般在使用简单的脚本中

</aside>

$0 : ./test.sh,即命令本身,相当于C/C++中的argv[0]

$1 : -f,第一个参数.

$2 : config.conf

$3, $4 ... :类推。

$# 参数的个数,不包括命令本身,上例中$#为4.

$@ :参数本身的列表,也不包括命令本身,如上例为 -f config.conf -v --prefix=/home

$* :和$@相同,但"$" 和 "$@"(加引号)并不同,"$"将所有的参数解释成一个字符串,而"$@"是一个参数数组。如下例所示:

getopts

getpots是Shell命令行参数解析工具,旨在从Shell Script的命令行当中解析参数。getopts被Shell程序用来分析位置参数,option包含需要被识别的选项字符,如果这里的字符后面跟着一个冒号,表明该字符选项需要一个参数,其参数需要以空格分隔。冒号和问号不能被用作选项字符。getopts每次被调用时,它会将下一个选项字符放置到变量中,OPTARG则可以拿到参数值;如果option前面加冒号,则代表忽略错误;