Ruclinux 发表于 2017-2-19 00:35:37

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

先说声谢谢了.

在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 就可以了?

TMD 发表于 2017-2-19 00:37:44

抱歉,这个我真的不懂,实在是帮不上忙!
sad.gif

Ruclinux 发表于 2017-2-19 07:52:32

自已顶
lol.gif

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

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

Ruclinux 发表于 2017-2-20 02:58:20


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

看得不是很明白,shell函数不用传参,直接用全局
因为 aa里接收的参数是需要不停变动的, 所以不知道如何在 ad 里给 aa 传参数. 谢谢了

dabiantai 发表于 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了

flyfish 发表于 2017-2-20 08:19:52

楼上说得对。$! $# $0 $1

Ruclinux 发表于 2017-2-20 08:45:35


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

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

talaon 发表于 2017-2-20 17:11:22

本帖最后由 talaon 于 2017-2-21 09:56 编辑
[*]#!/bin/bash
[*]
[*]in="命令行传参$1"
[*]
[*]function aaa()
[*]{   
[*]    a="aaa函数参数=$1"
[*]    echo $a
[*]}
[*]
[*]function bbb()
[*]{
[*]    b="bbb函数参数=$1"
[*]    aaa $b
[*]}
[*]
[*]bbb $in#命令行参数$1传到这里
[*]复制代码

bash xxx.sh string

是这样的吗?

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

Ruclinux 发表于 2017-2-20 08:19:00


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

bash xxx.sh string

是这样的吗?
谢谢您的回复, 但是我的命令行参数是不停变动的.
页: [1]
查看完整版本: 请教个shell编程中定义函数传参数的问题