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

系列目录与参考文献传送门: 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值