Bash 参数在函数中不可见
我正在写一个脚本,在这里我需要使用参数 这是我的foo.sh:Bash 参数在函数中不可见,bash,function,parameters,positional-parameter,Bash,Function,Parameters,Positional Parameter,我正在写一个脚本,在这里我需要使用参数 这是我的foo.sh: say_hello() { if [ "$1" == "hello" ] then echo "hello" else echo "<$1>" fi } echo "$1" say_hello say_hello() { 如果[“$1”==“你好”] 然后 回音“你好” 其他的 回声“” fi } 回音“$1” 打招呼 输出对我来说非常奇怪: hello <> 你好
say_hello()
{
if [ "$1" == "hello" ]
then
echo "hello"
else
echo "<$1>"
fi
}
echo "$1"
say_hello
say_hello()
{
如果[“$1”==“你好”]
然后
回音“你好”
其他的
回声“”
fi
}
回音“$1”
打招呼
输出对我来说非常奇怪:
hello
<>
你好
你能解释一下为什么在函数中我不能使用params吗?如何在函数中传递脚本参数 传递给shell中函数的参数与传递给shell本身的参数不同 例如,如果
print\u script\u args
如下所示:
echo $1
echo $2
foo() {
echo $1
echo $2
}
foo bye world
say_hello
say_hello $1
然后,/print\u script\u args hello world
将打印以下内容:
hello
world
bye
world
如果print\u function\u args
如下所示:
echo $1
echo $2
foo() {
echo $1
echo $2
}
foo bye world
say_hello
say_hello $1
然后,/print\u function\u args hello planet
将打印以下内容:
hello
world
bye
world
-脚本的参数不起任何作用,因为打印的是传递给shell函数的参数,即传递给shell中函数的参数与传递给shell本身的参数不同 例如,如果
print\u script\u args
如下所示:
echo $1
echo $2
foo() {
echo $1
echo $2
}
foo bye world
say_hello
say_hello $1
然后,/print\u script\u args hello world
将打印以下内容:
hello
world
bye
world
如果print\u function\u args
如下所示:
echo $1
echo $2
foo() {
echo $1
echo $2
}
foo bye world
say_hello
say_hello $1
然后,/print\u function\u args hello planet
将打印以下内容:
hello
world
bye
world
-脚本的参数不起任何作用,因为打印的是传递给shell函数的参数,即
bye world
您需要使用输入参数调用say_hello
函数
在say_hello
中,$1
引用传递给该函数的第一个参数。但是,您在没有任何参数的情况下调用它,如下所示:
echo $1
echo $2
foo() {
echo $1
echo $2
}
foo bye world
say_hello
say_hello $1
您需要将$1
(从主脚本上下文)作为参数传递给say_hello
函数,如下所示:
echo $1
echo $2
foo() {
echo $1
echo $2
}
foo bye world
say_hello
say_hello $1
在脚本中,
$1
引用从命令行运行脚本时传递给脚本的第一个参数。在函数say_hello
中,$1
指从脚本调用函数时传递给函数的第一个参数。您需要使用输入参数调用say_hello
函数
在say_hello
中,$1
引用传递给该函数的第一个参数。但是,您在没有任何参数的情况下调用它,如下所示:
echo $1
echo $2
foo() {
echo $1
echo $2
}
foo bye world
say_hello
say_hello $1
您需要将$1
(从主脚本上下文)作为参数传递给say_hello
函数,如下所示:
echo $1
echo $2
foo() {
echo $1
echo $2
}
foo bye world
say_hello
say_hello $1
在脚本中,
$1
引用从命令行运行脚本时传递给脚本的第一个参数。在函数say_hello
中,$1
指从脚本调用函数时传递给函数的第一个参数。函数的参数与shell的参数不同。@SeanBright您完全正确。谢谢添加此注释作为答案,我将选择它。或说_hello“$@”
传递所有参数参数参数到函数的参数与到shell的参数不同。@SeanBright您完全正确。谢谢添加此注释作为答案,我将选择它。或say_hello“$@”
传递所有参数