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

Bash 如何将位置参数传递给函数,bash,shell,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 "$i

我在尝试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的函数中不起作用。我做错什么了吗?我还在学习。那么你能解释一下为什么会这样吗?

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


这是函数而不是循环:

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和$2引用函数的参数,而不是脚本的参数。