shell入门学习笔记-05-参数

版权声明:本文为博主hanchao5272原创文章,转载请注明来源,并留下原文链接地址,谢谢! https://blog.csdn.net/hanchao5272/article/details/86430330

系列目录与参考文献传送门: shell入门学习笔记-序章

参数

变量 含义
$0 当前脚本的文件名。
$n(n≥1) 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是 $1,第二个参数是 $2。
$# 传递给脚本或函数的参数个数。
$* 传递给脚本或函数的所有参数。
$@ 传递给脚本或函数的所有参数。当被双引号" "包含时,$@ 与 $* 稍有不同,$*表示一份数据,$@表示多分数据。
$? 上个命令的退出状态,或函数的返回值,我们将在《Shell $?》一节中详细讲解。
$$ 当前 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

猜你喜欢

转载自blog.csdn.net/hanchao5272/article/details/86430330