关于shell脚本中函数内和函数外的参数$0、$1、$2...的对比

前言:
$0 相当于C++中的argv[0]
$1、 $2、 … 位置参数,具体见下面说明
$# 参数的个数
$@ 参数列表
$* 同上,表示参数列表
$? 上一条命令的退出状态
$$ 当前进程号

无论在函数内部还是函数外部,$0都是代表的程序名,但是$1、$2、$3、…以及 $# 、 $@ 是不同的,它们分别代表的是传递给程序和函数的对应参数( $# 是传入的参数个数, $@ 是表示参数列表)。

1、代码1

#! /bin/bash

echo $0
echo $1
echo $2
echo $3

foo()
{
    echo $0
    echo $1
    echo $2
    echo $3
    echo $4
    echo "function foo\n"
}

echo "---start---"
foo 11 22 33 44
#foo $0 $1 $2 $3 $4
echo "---end---"

2、运行结果1

3、代码2

#! /bin/bash

echo $0
echo $1
echo $2
echo $3

foo()
{
    echo $0
    echo $1
    echo $2
    echo $3
    echo $4
    echo "function foo\n"
}

echo "---start---"
#foo 11 22 33 44
foo $0 $1 $2 $3 $4
echo "---end---"

4、运行结果2

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值