函数中的Bash脚本打印语句

时间:2015-03-25 12:34:03

标签: bash function shell return

我试图编写一个返回值的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做吗?还有其他一些技巧可以返回值或打印消除输出的消息吗?

1 个答案:

答案 0 :(得分:1)

您可以在功能中echostderr

function f { echo -n "executing f: " >&2; echo $(($1 + 1)); }

$> x=$(f 2)
executing f:
$> echo $x
2