shell echo不遵循订单顺序

shell echo不遵循订单顺序,shell,unix,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] 我所期望的是执行的顺序是我写的。。 i、 e型 如何在shell脚本中执行此操作在以下操作之前添加回显: option=$(foo_bar) 因此

我有一个函数

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]
我所期望的是执行的顺序是我写的。。 i、 e型

如何在shell脚本中执行此操作在以下操作之前添加回显:

option=$(foo_bar)
因此,它变成:

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

echo
option=$(foo_bar)
echo $option

您正在变量
选项中捕获
foo\u bar
的输出。该输出包括foo_bar回显的文本。(也就是说,您正在将字符串
foo\u bar\n$option
分配给变量
option
,echo正在用空格替换换行符)但是,
read-p
将其提示打印到stderr。如果希望“foo_bar”打印到与read打印其提示相同的位置,请明确执行以下操作:

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


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


option=$(foo_bar)
echo $option