shell echo不遵循顺序序列

时间:2013-01-31 19:19:00

标签: shell unix

我有一个功能

foo_bar()
{
  echo "foo_bar"
  read -p "enter option" option
  echo $option
}


option=$(foo_bar)
echo $option

返回

enter option
and then in one line
foo_bar [option]

我期待的是执行遵循我写的顺序.. 即喜欢

foo_bar
enter option

[option]

我如何在shell脚本中执行此操作

2 个答案:

答案 0 :(得分:1)

之前添加回声:

option=$(foo_bar)

所以它变成了:

foo_bar()
{
  echo "foo_bar"
  read -p "enter option" option
  echo $option
}

echo
option=$(foo_bar)
echo $option

答案 1 :(得分:1)

您正在变量foo_bar中捕获option的输出。该输出包括foo_bar echos的文本。 (也就是说,您将字符串foo_bar\n$option分配给变量option,并且echo正在用空格替换换行符)但是,read -p将其提示输出到stderr。如果你想要" foo_bar"要打印到读取的同一位置打印其提示,请明确地这样做:

foo_bar()
{
  echo "foo_bar" >&2
  read -p "enter option" option
  echo $option
}


option=$(foo_bar)
echo $option