参数在函数中不可见
Parameter is not visible in function
我正在编写一个脚本,我需要在其中使用参数。
这是我的 foo.sh:
say_hello()
{
if [ "" == "hello" ]
then
echo "hello"
else
echo "<>"
fi
}
echo ""
say_hello
输出对我来说很奇怪:
hello
<>
你能解释一下为什么在函数中我不能使用参数吗?以及如何在函数中传递脚本参数?
您在 shell 中传递给函数的参数与传递给 shell 本身的参数不同。
例如,如果 print_script_args
看起来像这样:
echo
echo
然后 ./print_script_args hello world
将打印:
hello
world
如果 print_function_args
看起来像这样:
foo() {
echo
echo
}
foo bye world
然后 ./print_function_args hello planet
将打印此:
bye
world
——脚本的参数什么都不做,因为打印的是传递给shell函数的参数,即bye world
.
您需要使用输入参数调用 say_hello
函数。
在 say_hello
中,</code> 指传递给该函数的第一个参数。你在调用它时没有任何参数,就像这样:</p>
<pre><code>say_hello
您想要的是将 </code>(从主脚本上下文)作为参数传递给 <code>say_hello
函数,如下所示:
say_hello
在脚本中,</code> 是指从 command-line 传递给脚本的第一个参数 运行。在函数 <code>say_hello
中,
指的是从脚本调用时传递给函数的第一个参数。
我正在编写一个脚本,我需要在其中使用参数。
这是我的 foo.sh:
say_hello()
{
if [ "" == "hello" ]
then
echo "hello"
else
echo "<>"
fi
}
echo ""
say_hello
输出对我来说很奇怪:
hello
<>
你能解释一下为什么在函数中我不能使用参数吗?以及如何在函数中传递脚本参数?
您在 shell 中传递给函数的参数与传递给 shell 本身的参数不同。
例如,如果 print_script_args
看起来像这样:
echo
echo
然后 ./print_script_args hello world
将打印:
hello
world
如果 print_function_args
看起来像这样:
foo() {
echo
echo
}
foo bye world
然后 ./print_function_args hello planet
将打印此:
bye
world
——脚本的参数什么都不做,因为打印的是传递给shell函数的参数,即bye world
.
您需要使用输入参数调用 say_hello
函数。
在 say_hello
中,</code> 指传递给该函数的第一个参数。你在调用它时没有任何参数,就像这样:</p>
<pre><code>say_hello
您想要的是将 </code>(从主脚本上下文)作为参数传递给 <code>say_hello
函数,如下所示:
say_hello
在脚本中,</code> 是指从 command-line 传递给脚本的第一个参数 运行。在函数 <code>say_hello
中, 指的是从脚本调用时传递给函数的第一个参数。