请教个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 就可以了? 抱歉,这个我真的不懂,实在是帮不上忙!
sad.gif
自已顶
lol.gif
看得不是很明白,shell函数不用传参,直接用全局
talaon 发表于 2017-2-19 09:11
看得不是很明白,shell函数不用传参,直接用全局
因为 aa里接收的参数是需要不停变动的, 所以不知道如何在 ad 里给 aa 传参数. 谢谢了 #!/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了 楼上说得对。$! $# $0 $1
dabiantai 发表于 2017-2-20 08:19
#!/bin/bash
function test
{
我知道是这个原理, 您可能没明白我说的.我的意思是说 我有两个函数一个ad用来枚举文本里的每行内容, 另一个aa函数是将那个函数枚举出来的内容进行更进一步的操作. 现在我是不知道如何将ad枚举出来的每一行如何传参给aa. $1 $2 这样的参数只能是用到ad aa里就用不了了. 本帖最后由 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}
talaon 发表于 2017-2-21 09:54
bash xxx.sh string
是这样的吗?
谢谢您的回复, 但是我的命令行参数是不停变动的.
页:
[1]