我正在尝试使用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中的函数内部不起作用。我有什么不对吗?我还在学习东西。所以你能解释一下为什么会这样吗?
答案 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给出函数参数而不是脚本参数。