BASH将参数传递给函数';行不通
我试图将一个参数传递给函数install(),但输出是“add”,而不是我的参数。 当我调用函数directory-install()时,我不知道如何只获取REP,因为我知道所有短语“adddirectory…”BASH将参数传递给函数';行不通,bash,function,shell,Bash,Function,Shell,我试图将一个参数传递给函数install(),但输出是“add”,而不是我的参数。 当我调用函数directory-install()时,我不知道如何只获取REP,因为我知道所有短语“adddirectory…” 您的install功能100%正常工作,问题是您正在将其传递为垃圾。垃圾进来,垃圾出去 真正的罪魁祸首是你的目录安装功能。执行REP=$(目录安装)时,变量REP现在包含从directory install输出的所有文本,而不仅仅是最后的echo$REP。这意味着添加目录或创建目录文本
您的
install
功能100%正常工作,问题是您正在将其传递为垃圾。垃圾进来,垃圾出去
真正的罪魁祸首是你的目录安装
功能。执行REP=$(目录安装)
时,变量REP
现在包含从directory install
输出的所有文本,而不仅仅是最后的echo$REP
。这意味着添加目录
或创建目录
文本
如果希望directory install
仅返回REP
,则需要确保函数调用中没有其他输出。或者,您可以将非返回文本重定向到STDERR,在那里它将被显示,但不会被捕获
示例:
function badExample() {
echo "Hello World"
echo "ReturnText"
}
rtn=$(badExample)
# rtn now contains "Hello World\nReturnText"
function goodExample() {
echo "Hello World" 1>&2
echo "ReturnText"
}
rtn=$(goodExample)
# "Hello World" will appear on screen and rtn contains "ReturnText"
是您在
功能目录安装后遗漏的()
问题吗?@DaveYarwood编辑我的问题也许我遗漏了什么。。。但是您实际上在哪里调用安装?(编辑:OP编辑了他们的代码)@Mr.Llama在scriptBash函数末尾应该是f()
或函数f
。但是如果我需要其他输出,我该怎么做?@Droïdeka-我编辑了响应。您可以将输出重定向到STDERR,它将显示在屏幕上,但不会在返回中捕获。1>&2
的意思是“将STDOUT重定向到STDERR”。非常简单有效!真正的thx的解释,时间,和你的例子!
function badExample() {
echo "Hello World"
echo "ReturnText"
}
rtn=$(badExample)
# rtn now contains "Hello World\nReturnText"
function goodExample() {
echo "Hello World" 1>&2
echo "ReturnText"
}
rtn=$(goodExample)
# "Hello World" will appear on screen and rtn contains "ReturnText"