我试图编写一个返回值的bash函数,但也有print语句。问题是print语句最终作为函数返回值的一部分。例如:
function f {
echo -n "executing f: "
echo $(($1 + 1))
}
x=$(f 2)
echo $x
我希望f 2
的结果为3
,而#34;执行f:"打印到屏幕上,但f 2
的结果为executing f: 3
。我理解为什么会发生这种情况,但我正在寻找避免它的方法。
我的问题是:这可以用bash做吗?还有其他一些技巧可以返回值或打印消除输出的消息吗?
答案 0 :(得分:1)
您可以在功能中echo
到stderr
:
function f { echo -n "executing f: " >&2; echo $(($1 + 1)); }
$> x=$(f 2)
executing f:
$> echo $x
2