美文网首页
shell script中内部参数与外部参数

shell script中内部参数与外部参数

作者: 不正经运维 | 来源:发表于2018-06-11 09:51 被阅读17次

2018年6月11日 星期一

09:15

引子

shell中也可以直接定义函数,那么函数的的参数与脚本的参数有什么区别呢?话说,我没怎么用过函数的参数。

分析

都知道$0-$9是获取shell参数的变量,那么在函数中调用会有什么区别呢?

测试

首先,我们编写一个脚本进行测试:

#!/bin/bash

test_fun() {
    echo '$0 of the function is: '$0
    echo '$1 of the function is: '$1
    echo '$2 of the function is: '$2
}

echo '$0 of the script is '$0
echo '$1 of the script is '$1
echo '$2 of the script is '$2

test_fun para1 "para2 para3"

将上述代码保存为test.sh,并赋予权限。

chmod 744 test.sh
./test.sh test1 "tes t2"

$0 of the script is ./test.sh
$1 of the script is test1
$2 of the script is tes t2
$0 of the function is: ./test.sh
$1 of the function is: para1
$2 of the function is: para2 para3

可以看出,$0都是./test.sh,即脚本本身的路径,而$1$2都不同了。

提问

是否有办法获取到function的名称呢?请出万能的Google来帮我们找到答案。

修改test.sh,在test_fun里增加如下代码

echo ${FUNCNAME[0]}

然后我们再执行一遍:

./test.sh test1 "tes t2" 'test3 test4'
$0 of the script is ./test.sh
$1 of the script is test1
$2 of the script is tes t2
$0 of the function is: ./test.sh
$1 of the function is: para1
$2 of the function is: para2 para3
test_fun

恩,最后一句就是我们的functionname

总结

所以我们在shell脚本编写中,要注意:

  1. shell的参数要保存在别的变量中,否则function中获取可能出现问题(当赋予参数时);

  2. function中获取脚本名称,依然使用$0,函数名称就是${FUNCNAME[0]},对于我们输出错误信息有帮助。

参考

  1. shell 十三問?

  2. How to determine function name from inside a function

  3. 5.2 Bash Variables

相关文章

  • shell script中内部参数与外部参数

    2018年6月11日 星期一 09:15 引子 shell中也可以直接定义函数,那么函数的的参数与脚本的参数有什么...

  • swift中的内部参数名、外部参数名

    在swift中,一个参数有两个名字:内部参数名、外部参数名。 内部参数名:在函数内部使用的参数名(name) 外部...

  • 函数

    函数使用 内部参数和外部参数 在函数内部可以看到的参数,就是内部参数; 在函数外面可以看到的参数,就是外部参数; ...

  • 函数的内部参数名、外部参数名

    swift 中函数格式 在swift中,一个参数有两个名字:内部参数名、外部参数名。 内部参数名:在函数内部使用的...

  • Swift学习笔记-函数

    最简单的函数 带参数的函数 外部参数 swift中参数名可以填两个,前者是外部参数名(调用者使用),后者是内部参数...

  • Swift 基础语法

    1.懒加载 2.单例 3.函数 3.1 内部参数和外部参数 内部参数:在内部可以看到使用的参数叫做内部参数 外...

  • swift第二课续

    一. 函数的注意事项 1. 内部参数和外部参数 默认情况下, 函数中的所有参数都是内部参数, 从第二个参数开始既是...

  • swift5 内部参数名和内部参数名的解释和例子

    函数如果带有参数,func funcA(参数){ },那么每个参数都有一个外部参数名和一个内部参数名。内部参数名:...

  • swift基础介绍-3

    1、函数 使用注意:1-1、外部参数和内部参数内参:在函数内部能看到的参数外采:在函数外部能看到的参数 1-2、在...

  • 【Shell Script】带参数

    位置参数,带默认值

网友评论

      本文标题:shell script中内部参数与外部参数

      本文链接:https://www.haomeiwen.com/subject/dvuceftx.html