Shell函数参数

在shell中调用函数时,可以向其传递参数,其中常用的特殊变量如下表所示:

函数参数含义
$#传递到脚本或函数的参数个数
$n

$1表示第一个参数,$2表示第二个参数……

注意,当n>=10时,要使用${n}来获取相应的参数

$*以一个字符串的形式输出传递给函数或脚本的所有参数
$@以每个参数的形式输出传递给函数或脚本的所有参数
$!上一个命令的进程ID号即PID
$$脚本运行的当前进程ID号即PID
$0当前程序的名称
$?显示前一个命令或函数的的退出状态,0表示没有错误,其他任何值表示有错误
$-显示shell使用的当前选项,与set命令功能相同

脚本示例如下所示:

#!/bin/bash

funWithParam(){
    echo "传递到函数的参数总数:$#个"
    echo "第一个参数为:$1 !"
    echo "第二个参数为:$2 !"
    echo "第十个参数为:$10 !"
    echo "第十个参数为:${10} !"
    echo "字符串形式输出所有的参数:$*"
    echo "每个字符串形式输出所有的参数:$@"
    echo "上一个命令的PID:$!"
    echo "当前运行进程的ID:$$"
    echo "当前程序的名称:$0"
    echo "显示shell使用的当前选项:$-"
}
 funWithParam 1 2 3 4 5 6 7 8 9 34 35

输出的结果为:

传递到函数的参数总数:11个
第一个参数为:1 
第二个参数为:2 
第十个参数为:10 
第十个参数为:34 
字符串形式输出所有的参数:1 2 3 4 5 6 7 8 9 34 35
每个字符串形式输出所有的参数:1 2 3 4 5 6 7 8 9 34 35
上一个命令的PID:
当前运行进程的ID:5358
当前程序的名称:./test.sh
显示shell使用的当前选项:hB

特别注意:

1、$10不能获取第十个参数,要使用${10}来获取

2、$@与$*在没有被双引号包括时,输出是没有区别的,如上面的例子所示。但如果有双引号,$@会将每个参数作为单独的参数输出,$*会把每个参数作为一个整体的字符串输出

[root@171-rc6-2-4 shell]cat test.sh
#!/bin/bash
funwithparm1(){
    echo "所有参数作为一个字符串输出:\"\$*\" "
    for i in "$*"
    do
       echo "$i"
    done
    echo "每个参数作为一个整体输出:\"\$@\" "
    for j in "$@"
    do
        echo "$j"
    done
}
funwithparm1 1 2 3 4

[root@171-rc6-2-4 shell]# ./test.sh 
所有参数作为一个字符串输出:"$*" 
1 2 3 4
每个参数作为一个整体输出:"$@" 
1
2
3
4

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值