这是$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”