Shell脚本函数传递参数的实现方法

如何传递参数到Shell脚本函数

通常,在其他脚本语言中,您可以将参数和参数作为function_name(parameter1, parameter2,…)传递给函数,这在shell脚本函数中不支持。在shell脚本函数中,您可以在函数调用期间直接传递参数,而无需在函数定义中定义它们的名称,并直接使用位置参数 $1 作为第一个参数, $2 作为第二个参数,以此类推。

在shell脚本中定义函数有两种方法

function function_name {
    ...
}

OR

function_name () {
    ...
}

无论是否传递参数,每个shell脚本函数都必须像上面那样定义。您将注意到,在函数签名中没有指定任何实参。

下面介绍如何调用同一个shell脚本函数

function_name arg1 arg2 ...

正如前面提到的,每个shell脚本函数通过其位置$1、$2等引用参数。$0表示函数的名称。

下面是一个shell脚本函数的例子,它读取第一个参数并回显它。创建一个空的shell脚本,如下所示。

$ sudo vi test_script.sh

向它添加以下行。

#!/usr/bin/env sh

test() {
    echo "Parameter #1 is $1"
}

test 20

用以下命令运行上面的脚本。

$ sudo ./test_script.sh
Parameter #1 is 20

重要的是要记住,只能在函数定义之后调用函数。如果你在定义之前调用它,那么它会给你一个错误。

您还可以调用在shell脚本函数之外定义的变量,并将它们用作参数。在下面的例子中,我们使用了在函数外部定义的变量 $name 作为参数

$ sudo vi test_script.sh

向它添加以下行。

test() {
    echo hello $name
}

name="tom"
test

用以下命令运行上面的脚本。

$ sudo ./test_script.sh
hello tom

在本文中,我们研究了向shell脚本函数传递参数的两种不同方法。

到此这篇关于Shell脚本函数传递参数的实现方法的文章就介绍到这了,更多相关Shell函数传递参数内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 详解shell中脚本参数传递的两种方式

    方式一:$0,$1,$2.. 采用$0,$1,$2..等方式获取脚本命令行传入的参数,值得注意的是,$0获取到的是脚本路径以及脚本名,后面按顺序获取参数,当参数超过10个时(包括10个),需要使用${10},${11}....才能获取到参数,但是一般很少会超过10个参数的情况. 1.1 示例:新建一个test.sh的文件 #!/bin/bash echo "脚本$0" echo "第一个参数$1" echo "第二个参数$2" 在shell中执行

  • Shell脚本传递参数的3种方法比较

    #!/bin/bash #extracting command text_text_text_line options as parameters help_info(){ echo "NAME" echo "\t$0" echo "SYNOPSIS" echo "\t$0 is a shell test about process options" echo "DESCRIPTION" echo &quo

  • Shell脚本通过参数名传递参数的实现代码

    平常在写shell脚本都是用$1,$2-这种方式来接收参数,然而这种接收参数的方式不但容易忘记且不易于理解和维护.Linux常用的命令都可指定参数名和参数值,然而我们怎样才能给自己的shell脚本也采用参数名和参数值这样的方式来获取参数值呢?而不是通过$1,$2这种方式进行获取.下面的例子定义了短参数名和长参数名两种获取参数值的方式.其实是根据getopt提供的特性进行整理而来. #!/bin/bash while getopts i:o:p:s:t: OPT; do case ${OPT} i

  • shell传参并将参数传递给sql文件的方法

    如下所示: 调用代码:   sh /tmp/t.sh 20160808 echo $1 cat /tmp/t.sql | sed '$s/ssssss/'$1'/g' | mysql -t -u loader -ploader.1 -h 10.18.141.53 dxsvr echo "mysql done" 以上这篇shell传参并将参数传递给sql文件的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • Shell脚本函数传递参数的实现方法

    如何传递参数到Shell脚本函数 通常,在其他脚本语言中,您可以将参数和参数作为function_name(parameter1, parameter2,…)传递给函数,这在shell脚本函数中不支持.在shell脚本函数中,您可以在函数调用期间直接传递参数,而无需在函数定义中定义它们的名称,并直接使用位置参数 $1 作为第一个参数, $2 作为第二个参数,以此类推. 在shell脚本中定义函数有两种方法 function function_name { ... } OR function_na

  • Python脚本文件外部传递参数的处理方法

    前言 我们写的 Python 脚本需要修改参数,当我们将脚步上传到服务器或者给不会编程的人用时,会比较不方便,如果直接可以在外部指定参数,会非常方便,今天介绍的就是 Python 外部指定参数的几种方法. 一.流文本处理 这种方法适用于修改一下文件中的内容,配合 Linux 命令非常方便,举一个例子,我们需要从一个 binlog 文件中找到该里面最大的事物,我们要配合 mysqldump 来做: mysqlbinlog -v --base64-output=decode-row ./mysql-

  • Qt中简单的按钮槽函数传递参数方法

    目录 Qt按钮槽函数传递参数方法 Qt槽函数的几种用法 通过ui控件添加槽函数 通过connect连接 Qt按钮槽函数传递参数方法 Qt中一个典型的点击按钮触发槽函数的写法是: connect(btn, &QPushButton::clicked, this, &class::func); 当你希望在点击按钮后再向槽函数中传递参数,这种写法就无法做到了. 其原因是槽函数要和信号的参数完全对应,如果修改了传给槽函数的参数,点击按钮的信号就无法处理. 这里给出一个比较简单的传参方法,在信号槽中

  • shell脚本读取命令行参数的实现

    目录 前提 选项与参数: 一.手工处理方式(已验证) 二.getopts/getopt 三.总结 前提 在编写shell程序时经常需要处理命令行参数 选项与参数: 如下命令行: ./test.sh -f config.conf -v --prefix=/home -f为选项,它需要一个参数,即config.conf, -v 也是一个选项,但它不需要参数. --prefix我们称之为一个长选项,即选项本身多于一个字符,它也需要一个参数,用等号连接,当然等号不是必须的, /home可以直接写在--p

  • shell脚本无密码登录 expect的使用方法详解

    shell脚本无密码登录 expect的使用方法详解 今天需要做一个定时任务脚本将最新的数据包文件传到远程的服务器上,虽然有密钥但也是要求输入密码的那种,所以只能另想办法实现让脚本自动输入密码了. 从网上查到使用expect可以,简单研究了一下,效果不错. 因为我的操作系统没有安装expect,所以直接"yum -y install expect",你可以根据你的操作系统安装expect,或者源码编译. 安装好之后就可以使用了,这里有几种方法: 一.单独写一个脚本 如 auto_scp

  • 深入理解python中函数传递参数是值传递还是引用传递

    目前网络上大部分博客的结论都是这样的: Python不允许程序员选择采用传值还是传 引用.Python参数传递采用的肯定是"传对象引用"的方式.实际上,这种方式相当于传值和传引用的一种综合.如果函数收到的是一个可变对象(比如字典 或者列表)的引用,就能修改对象的原始值--相当于通过"传引用"来传递对象.如果函数收到的是一个不可变对象(比如数字.字符或者元组)的引用,就不能 直接修改原始对象--相当于通过"传值"来传递对象. 你可以在很多讨论该问题

  • Javascript基于AJAX回调函数传递参数实例分析

    本文实例讲述了Javascript基于AJAX回调函数传递参数的方法.分享给大家供大家参考,具体如下: 前面介绍了<javascript实现html页面之间参数传递的四种方法>,这里针对ajax参数传递做一分析. 在Javascript 中,特别是在AJAX中,回调函数常常是一个函数名,没有地方放入参数,如下面的AJAX代码,在成功后将调用回调函数callback,但callback是有参数的,如何把参数传进来呢? var callback = function(p1){ //do somet

  • js提交form表单,并传递参数的实现方法

    //增加的函数 begin function queryFun(){ var type = $("#artType").val(); var hasInputed = "1";//表示输入了要搜索 的信息 if($("#query").val()=="选手姓名/编号"){ //表示没有输入要搜索的值 hasInputed="0"; } document.getElementById("queryF

  • javascript中函数作为参数调用的方法

    本文实例讲述了javascript中函数作为参数调用的方法.分享给大家供大家参考.具体分析如下: 先来看示例: function Map(){ var obj = {}; this.put = function(key, value){ obj[key] = value; } this.eachMap = function(fn){ for(var attr in obj){ fn(attr, obj[attr]); } } } var m = new Map(); m.put('01', 'a

  • Linux下使用Shell脚本获取终端宽度的解决方法

    获取终端大小时候的学习 在写shell脚本时想输出一行占满整个终端屏幕宽度的 横杠 发现for循环会导致执行缓慢 解决方法: 使用yes 命令 sed '50q' 显示50行 tr -d '\n' 删除 \n 多次重复输入相同字符可用yes yes "2" | sed '50q' | tr -d '\n' 想法来自:打印100个连续的符号,不用循环 ---------------------------------------------------------------------

随机推荐