全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
查看: 1260|回复: 9

请教个shell编程中定义函数传参数的问题

[复制链接]
发表于 2017-2-19 00:35:37 | 显示全部楼层 |阅读模式
先说声谢谢了.

在shell中如何做到像php中传参数呢?

比如在php中, 有两个自定义函数我们可以直接传参, 但是它是可以得到另外一个子函数的数据的.

function aa($ic) {
echo $ic;
)

function ad($id) {
echo aa($id);
}

这样可以在ad里执行aa

但是在shell 里却是 ad $1 $2 这样传参的. 我要在ad函数里执行aa函数 这里的函数里是有不同变量的 怎么把这些变量传参到 aa 函数里呢?

比如

function aa() {
.......
.......
........
echo ${变量} >> xx.xx
}

function ad() {
id=`cat $1
aa $id
}
ad $1


难道就是在ad里用 aa $id 就可以了?
发表于 2017-2-19 00:37:44 | 显示全部楼层
抱歉,这个我真的不懂,实在是帮不上忙!
发表于 2017-2-19 09:11:38 | 显示全部楼层
看得不是很明白,shell函数不用传参,直接用全局
 楼主| 发表于 2017-2-20 02:58:20 | 显示全部楼层
talaon 发表于 2017-2-19 09:11
看得不是很明白,shell函数不用传参,直接用全局

因为 aa里接收的参数是需要不停变动的, 所以不知道如何在 ad 里给 aa 传参数. 谢谢了
发表于 2017-2-20 08:19:52 | 显示全部楼层
#!/bin/bash
function test
{
    echo test arg1 $1
    echo test arg2 $2
    echo all args $@
}

test 3 4
echo $1 $2

把这个保存为a.sh然后运行bash ./a.sh 1 2你就明白$1 $2了
发表于 2017-2-20 08:45:35 来自手机 | 显示全部楼层
楼上说得对。$! $# $0 $1
 楼主| 发表于 2017-2-20 17:11:22 | 显示全部楼层
dabiantai 发表于 2017-2-20 08:19
#!/bin/bash
function test
{

我知道是这个原理, 您可能没明白我说的.  我的意思是说 我有两个函数  一个ad用来枚举文本里的每行内容, 另一个aa函数是将那个函数枚举出来的内容进行更进一步的操作. 现在我是不知道如何将ad枚举出来的每一行如何传参给aa. $1 $2 这样的参数只能是用到ad aa里就用不了了.
发表于 2017-2-21 09:54:11 | 显示全部楼层
本帖最后由 talaon 于 2017-2-21 09:56 编辑
  1. #!/bin/bash

  2. in="命令行传参$1"

  3. function aaa()
  4. {   
  5.     a="aaa函数参数=$1"
  6.     echo $a
  7. }

  8. function bbb()
  9. {
  10.     b="bbb函数参数=$1"
  11.     aaa $b
  12. }

  13. bbb $in  #命令行参数$1传到这里
复制代码


bash xxx.sh string

是这样的吗?

可以这样理解:   
php是这样function aaa($a,$b,$c){}
bash是这样function aaa(){a=$1 b=$2 c=$3}
 楼主| 发表于 2017-2-22 00:22:41 | 显示全部楼层
talaon 发表于 2017-2-21 09:54
bash xxx.sh string

是这样的吗?

谢谢您的回复, 但是我的命令行参数是不停变动的.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2024-3-29 13:47 , Processed in 0.102612 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表