shell参数简单介绍

如下一个命令:

1
./test.sh -f config.conf -v --prefix=/home

我们称 -f 为选项,它需要一个参数,即 config.conf,-v 也是一个选项,但它不需要参数。--prefix 我们称之为一个长选项,即选项本身多于一个字符,它也需要一个参数,用等号连接,当然等号不是必须的,/home可以直接写在--prefix后面,即--prefix/home

以上述的命令为例:

  • $0 : ./test.sh,即命令本身,相当于C/C++中的 argv[0]
  • $1 : -f,第一个参数
  • $2 : config.conf,第二个参数
  • $3 , $4 … :类推
  • $# : 参数的个数,不包括命令本身,上例中 $#4
  • $@ : 参数本身的列表,也不包括命令本身,如上例为 -fconfig.conf-v--prefix=/home
  • $* : 和 $@ 相同,但 $*$@ 并不同, $* 将所有的参数解释成一个字符串,而 $@ 是一个参数数组。

参考链接

署名 - 非商业性使用 - 禁止演绎 4.0