系列目录与参考文献传送门: shell入门学习笔记-序章
参数
变量 | 含义 |
---|---|
$0 | 当前脚本的文件名。 |
$n(n≥1) | 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是 $1,第二个参数是 $2。 |
$# | 传递给脚本或函数的参数个数。 |
$* | 传递给脚本或函数的所有参数。 |
$@ | 传递给脚本或函数的所有参数。当被双引号" "包含时,$@ 与 $* 稍有不同,$*表示一份数据,$@表示多分数据。 |
$? | 上个命令的退出状态,或函数的返回值 |
$$ | 当前 Shell 进程 ID。对于 Shell 脚本,就是这些脚本所在的进程 ID。 |
位置参数/命令行参数
- shell中没有实参和形参,只有位置参数。
- shell中通过位置参数向脚本或者换出传递参数。
- 位置参数的形式是
$n
,其中$1
表示传递的第一个参数,以此类推。 - 当参数格式超过10个时,通过
${11}
来进行接收。
给脚本文件传递参数
admindeMacBook-Pro:myshell admin$ cat a.sh
#!/bin/bash
echo "Hello world! My name is $1, I'm from $2 province."
admindeMacBook-Pro:myshell admin$ ./a.sh David Hebei
Hello world! My name is David, I'm from Hebei province.
给函数传递参数
admindeMacBook-Pro:myshell admin$ cat a.sh
#!/bin/bash
function test(){
echo "I'm $1, I'm $2 years old."
}
test Lili 22
admindeMacBook-Pro:myshell admin$ . a.sh
I'm Lili, I'm 22 years old.
admindeMacBook-Pro:myshell admin$ ./a.sh 521 1314
Pid: 57807
FileName: ./a.sh
parameters count: 2
1st parameter: 521
2nd parameter: 1314
All parameters(*): 521 1314
All parameters(@): 521 1314
$*与$@
admindeMacBook-Pro:myshell admin$ cat a.sh
#!/bin/bash
echo "Pid: $$"
echo "FileName: $0"
echo "parameters count: $#"
echo "1st parameter: $1"
echo "2nd parameter: $2"
echo "Print each parameter from \"\$*\""
for var in "$*"
do
echo "$var"
done
echo "Print each parameter from \"\$@\""
for var in "$@"
do
echo "$var"
done
admindeMacBook-Pro:myshell admin$ ./a.sh 521 1314
Pid: 57909
FileName: ./a.sh
parameters count: 2
1st parameter: 521
2nd parameter: 1314
Print each parameter from "$*"
521 1314
Print each parameter from "$@"
521
1314
$*
与$@
都表示传递给函数或者脚本的所有参数。$*
将所有参数当做一份数据。$@
将每个参数看做是单独的数据。
$?
获取命令的返回值
admindeMacBook-Pro:myshell admin$ cat a.sh
#!/bin/bash
if [ $1 == open ]
then
return 0 # ok
else
return 1 # error
fi
admindeMacBook-Pro:myshell admin$ . a.sh open
admindeMacBook-Pro:myshell admin$ echo $?
0
admindeMacBook-Pro:myshell admin$ . a.sh close
admindeMacBook-Pro:myshell admin$ echo $?
1
获取函数的返回值
admindeMacBook-Pro:myshell admin$ cat b.sh
#!/bin/bash
function add(){
echo "All Parameters: $*"
return $(expr $1 + $2)
}
add 13 14
echo "reslut: $?"
admindeMacBook-Pro:myshell admin$ ./b.sh
All Parameters: 13 14
reslut: 27