我正在编写一个脚本,需要在其中使用参数。
这是我的foo.sh:
say_hello()
{
if [ "$1" == "hello" ]
then
echo "hello"
else
echo "<$1>"
fi
}
echo "$1"
say_hello
输出对我来说很奇怪:
hello
<>
您能解释一下为什么在功能上我不能使用params吗?以及如何在函数中传递脚本参数?
答案 0 :(得分:2)
传递给Shell中的函数的参数与传递给Shell本身的参数不同。
例如,如果print_script_args
如下所示:
echo $1
echo $2
然后./print_script_args hello world
将打印以下内容:
hello
world
如果print_function_args
看起来像这样:
foo() {
echo $1
echo $2
}
foo bye world
然后./print_function_args hello planet
将打印以下内容:
bye
world
-脚本的参数不起作用,因为输出的是传递给shell函数的参数,即bye world
。
答案 1 :(得分:0)
您需要使用输入参数调用say_hello
函数。
在say_hello
中,$1
指的是传递给该函数的第一个参数。您正在调用它而没有任何参数,例如:
say_hello
您想要的是将$1
(从主脚本上下文)作为参数传递给say_hello
函数,如下所示:
say_hello $1
在脚本中,$1
表示从命令行运行时传递给脚本的第一个参数。在函数say_hello
中,$1
表示从脚本调用该函数时传递给该函数的第一个参数。