如何将位置参数传递给函数

时间:2013-11-28 20:10:02

标签: bash shell

我正在尝试使用bash脚本。我制作了这个简单的剧本

#!/bin/bash

function myfun()
{
    for item in `seq 1 5`
    do
        echo "$item $1 $2"
    done
}
myfun

但没有运气。如果我像下面这样改变它,一切似乎都很好,

#!/bin/bash

a=$1
b=$2

function myfun()
{
    for item in `seq 1 5`
    do
        echo "$item $a $b"
    done
}
myfun

看起来参数(位置参数)在shell中的函数内部不起作用。我有什么不对吗?我还在学习东西。所以你能解释一下为什么会这样吗?

2 个答案:

答案 0 :(得分:5)

这不是循环的功能:

function myfun()
{
    for item in `seq 1 5`
    do
        echo "$item $1 $2"
    done
}

# Pass all of the script's parameters to the function,
# as if writing  myfun "$1" "$2" "$3"..
myfun "$@"

答案 1 :(得分:4)

在函数内部,$ 1和$ 2给出函数参数而不是脚本参数。

http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-8.html