在 Bash 函数中使用位置参数

在 Bash 函数中使用位置参数

这是$1不起作用的例子。

$ cat ~/myScript
#!/bin/bash
function hello () {
echo "Hello $1"
}
hello
$ ./myScript
 Hello

答案1

将函数视为脚本中的小脚本。 脚本会忽略它们直到被调用为止。因此,位置参数会被忽略,直到传递给函数。

但是它们的作用有限。我知道它们无法支持if then函数内的语句,因为它们会被忽略。还有一些其他规则,但您可以exit在函数内运行脚本。如果您检查带有参数的错误,则应在调用函数之前执行这些操作。

您想要将位置参数($1、$2、$3 等...)传递到脚本中。但是,您希望将位置参数传递给函数。如果在调用函数时未指定参数,则函数不会接收该参数。您需要为其提供参数。

拿出你的脚本:

#!/bin/bash
function hello () {
echo "Hello $1"
}
hello

$1只需在仅仅显示内容的行中添加一个,hello就可以将参数传递给函数。

#!/bin/bash
function hello () {
echo "Hello $1"
}
hello $1

现在使用参数调用脚本将产生所需的输出:

$ ./myscript Terrance
Hello Terrance

如果您想添加快速检查以使其在脚本后不接受空白输入,请在调用之前将以下检查添加到您的脚本中:

#!/bin/bash
function hello () {
    echo "Hello $1"
}
if [[ $1 != "" ]]; then
    hello $1
    exit
else
    echo "Please input a name.  Example: $0 Terrance"
fi

上面的示例脚本检查了!=哪个表示not equal to,然后两个""表示空白。因此,if parameter 1 is not equal to blank then如果为真,则它会使用参数运行函数调用,然后在调用函数后退出脚本。否则它会给出我的错误消息。的位置参数$0是您刚刚调用的命令的参数。

我的脚本被调用的示例:

$ ./myscript 
Please input a name.  Example: ./myscript Terrance


$ ./myscript Terrance
Hello Terrance

随着您不断编写脚本,您将开始学习更多技巧和正确命令以及它们的使用方法。继续编写脚本!

希望这可以帮助!

答案2

它可以工作,但是也许你没有按照应该的方式使用它。$1 指的是该函数的第一个参数。

function hello () { echo "Hello $1" }

声明一个函数,以便当你使用参数调用它时,它会打印“Hello”和第一个参数:

hello WORLDDD

打印“Hello WORLDDD”

相关内容