shell之输入参数
在 shell 脚本中如何得到一些程序外部的变量呢?通过输入参数可以实现这个步骤,如下:./test.sh -f config.conf -v --prefix=/home
这是随便写的一个示例,没有任何实际意义。
test.sh 中通过什么方式获取到 config.conf /home 这些参数,然后做不同的处理呢?
$0 : ./test.sh,即命令本身,相当于C/C++中的argv[0] $1 : -f,第一个参数. $2 : config.conf $3, $4 ... :类推。 $# : 参数的个数,不包括命令本身,上例中$#为4. $@ :参数本身的列表,也不包括命令本身,如上例为 -f config.conf -v --prefix=/home $* :和$@相同,但"$*" 和 "$@"(加引号)并不同,"$*"将所有的参数解释成一个字符串,而"$@"是一个参数数组。可以用下面的这个程序来详细看看 $* $@ 的值:
#!/bin/bash # 输出 $* for arg in "$*" do echo $arg done # 输出 $@ for arg in "$@" do echo $arg done更多内容可参考:Bash Shell中命令行选项/参数处理