通过$0可以获取传递来的第一个参数,就是脚本自己,$1可以获得第二个参数,比如:
- #!/bin/bash
- echo "$0"
- echo "$1"
运行程序
- ./test/sh q
看到:
- $ ./test.sh q
- ./test.sh
- q
传递参数的时候,如果是字符串,可以用单引号或者双引号包起来,表示这是一个完整的参数:
- ./test.sh "this is a test"
既然扯到双引号,要注意,如果在双引号里使用了变量,也会用其值替换,比如:
- ./test.sh "$HOME"
- ./test.sh
- /home/chenshu
$HOME的值被用来作为第二个参数。 同样,这里用上单引号就不会取值。$* 值得是从第1个参数开始的所有参数,如果没有指定间隔字符,默认用空格。比如下面的脚本:
- #!/bin/bash
- echo "$*"
这样调用:
- ./test.sh "this is a test" "abc"
结果显示为:
- this is a test abc
现在设置一下IFS:
- !/bin/bash
- IFS=^
- echo "$*"
结果显示为:
- this is a test^abc
如果IFS设置为换行符,需要这样写:
- IFS=$"
"
使用$@基本上和$*一样,除了IFS设置无效外。有时候,想知道外部参数的数量,可以用$#
- #!/bin/bash
- IFS=^
- echo "$*"
- echo "$#"
运行脚本:
- ./test.sh "this is a test" "abc"
输出为2,不包含第0个参数。