我在我的脚本中编写了一个函数,用于在控制台上打印消息。它可以从任何其他函数中调用。
function print_message
{
echo "message content"
}
问题在于,在shell中,像
echo
或printf
这样通常将数据打印到标准输出的函数,会将它们的消息重定向到调用函数作为返回值。return_value=$(print_message) # this line print nothing.
echo $return_value # This line print the message. I don't want to have to do it.
我希望避免这种行为并直接将其打印到标准输出或错误输出。有没有办法做到这一点?
或者我只是想在shell中使用函数,这样做是错误的,应该使用一个庞大的脚本来处理任何行为吗?
print_message
的输出总是进入标准错误流吗?那么在函数中重定向到echo "message content" >&2
。 - Etan Reisner$( ... )
捕获,而 STDERR 则会显示在屏幕上。 - Mr. Llama>&1
似乎不起作用。 - Aracthor$(...)
语法 捕获 标准输出。这就是你的问题最初出现的地方。它的作用就是如此。在$(...)
上下文中,你不能将你的函数输出到与其余调用不同的其他标准输出上,除非使用标准错误并/或直接检测并打印到 tty/等。 - Etan Reisner