找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 102|回复: 9

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

[复制链接]

309

主题

3694

回帖

8395

积分

论坛元老

积分
8395
发表于 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 就可以了?
回复

使用道具 举报

4

主题

87

回帖

190

积分

注册会员

积分
190
发表于 2017-2-19 00:37:44 | 显示全部楼层
抱歉,这个我真的不懂,实在是帮不上忙!

回复

使用道具 举报

309

主题

3694

回帖

8395

积分

论坛元老

积分
8395
 楼主| 发表于 2017-2-19 07:52:32 | 显示全部楼层
自已顶

回复

使用道具 举报

20

主题

99

回帖

278

积分

中级会员

积分
278
发表于 2017-2-19 09:11:38 | 显示全部楼层
看得不是很明白,shell函数不用传参,直接用全局
回复

使用道具 举报

309

主题

3694

回帖

8395

积分

论坛元老

积分
8395
 楼主| 发表于 2017-2-20 02:58:20 | 显示全部楼层

talaon 发表于 2017-2-19 09:11

看得不是很明白,shell函数不用传参,直接用全局

因为 aa里接收的参数是需要不停变动的, 所以不知道如何在 ad 里给 aa 传参数. 谢谢了
回复

使用道具 举报

13

主题

151

回帖

351

积分

中级会员

积分
351
发表于 2017-2-19 09:11:00 | 显示全部楼层
#!/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了
回复

使用道具 举报

152

主题

1388

回帖

3268

积分

论坛元老

积分
3268
发表于 2017-2-20 08:19:52 | 显示全部楼层
楼上说得对。$! $# $0 $1
回复

使用道具 举报

309

主题

3694

回帖

8395

积分

论坛元老

积分
8395
 楼主| 发表于 2017-2-20 08:45:35 | 显示全部楼层

dabiantai 发表于 2017-2-20 08:19

#!/bin/bash
function test
{

我知道是这个原理, 您可能没明白我说的.  我的意思是说 我有两个函数  一个ad用来枚举文本里的每行内容, 另一个aa函数是将那个函数枚举出来的内容进行更进一步的操作. 现在我是不知道如何将ad枚举出来的每一行如何传参给aa. $1 $2 这样的参数只能是用到ad aa里就用不了了.
回复

使用道具 举报

20

主题

99

回帖

278

积分

中级会员

积分
278
发表于 2017-2-20 17:11:22 | 显示全部楼层
本帖最后由 talaon 于 2017-2-21 09:56 编辑
[ol]
  • #!/bin/bash
  • in="命令行传参$1"
  • function aaa()
  • {   
  •     a="aaa函数参数=$1"
  •     echo $a
  • }
  • function bbb()
  • {
  •     b="bbb函数参数=$1"
  •     aaa $b
  • }
  • bbb $in  #命令行参数$1传到这里
  • [/ol]复制代码

    bash xxx.sh string

    是这样的吗?

    可以这样理解:   
    php是这样function aaa($a,$b,$c){}
    bash是这样function aaa(){a=$1 b=$2 c=$3}
  • 回复

    使用道具 举报

    309

    主题

    3694

    回帖

    8395

    积分

    论坛元老

    积分
    8395
     楼主| 发表于 2017-2-20 08:19:00 | 显示全部楼层

    talaon 发表于 2017-2-21 09:54

    bash xxx.sh string

    是这样的吗?

    谢谢您的回复, 但是我的命令行参数是不停变动的.
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|Discuz! X

    GMT+8, 2025-2-8 16:29 , Processed in 0.018339 second(s), 3 queries , Gzip On, Redis On.

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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